Không thể bắt đầu <myapp> .service: Đơn vị <myapp> .service không tìm thấy


13

Tôi đã tạo một tập lệnh init.d siêu cơ bản cho bot python của mình:

#!/bin/bash
# chkconfig: 2345 20 80
# description: Description comes here....

# Source function library.
. /etc/init.d/functions

start() {
    echo "starting torbot"
    python /home/ctote/dev/slackbots/torbot/torbot.py
    # example: daemon program_name &
}

stop() {
    # code to stop app comes here
    # example: killproc program_name
}

case "$1" in
    start)
       start
       ;;
    stop)
       stop
       ;;
    restart)
       stop
       start
       ;;
    status)
       # code to check status of app comes here
       # example: status program_name
       ;;
    *)
       echo "Usage: $0 {start|stop|status|restart}"
esac

Và đã được thiết lập torbot.pyđể được +x#!/usr/local/bin/pythonở trên cùng. Khi tôi cố gắng thực sự bắt đầu nó, tôi nhận được:

:/var/lock/subsys$ sudo service torbot start Failed to start torbot.service: Unit torbot.service not found.

Tui bỏ lỡ điều gì vậy?

Câu trả lời:


4

Nếu bạn đang sử dụng Ubuntu 16.04 trở lên, bạn có thể muốn xem lại tài liệu của systemd về việc tạo các tệp dịch vụ

Kịch bản dành cho hệ thống init cũ và được quản lý bởi lớp tương thích cũ.


2

Đối với tôi, tôi đang sử dụng Ubuntu 16.04.

Đầu tiên thay đổi chức năng init

. /etc/init.d/functions

đến

. /lib/lsb/init-functions

Sau đó, trong shell, tạo các liên kết tượng trưng từ / etc / rc * đến tập lệnh của tôi:

sudo update-rc.d <myapp> defaults 95

Có nghĩa là 95 ở đây?
Gherman

@Gherman ưu tiên của nó
turson

1

Ok, tôi đã thử một số bước câu trả lời stackoverflow này ( Chạy tập lệnh khởi động vào ngày 17.04? ) Và họ đã làm việc. Env của tôi như sau

  1. Ubuntu lúc 17.10
  2. Tôi có một ứng dụng python trên máy chủ Gunicorn 19.x, tôi cần khởi động ứng dụng này như một dịch vụ.

Trước tiên, bạn cần phải viết một tệp foo.service.

[Unit] 
Description=FooServer 

[Service] 
Restart=on-failure
WorkingDirectory=/path/to/your/working/directory/where the foo lives
ExecStart=/what/process/will call foo eg: in my case I used gunicorn app:app
ExecReload=/bin/kill -HUP $MAINPID 
KillSignal=SIGINT 

[Install] 
WantedBy=multi-user.target

Ý nghĩa của mỗi từ ở phía bên trái của dấu '=' và tương đương của chúng trong (với trước đó) là trong liên kết https: //wiki.ub Ubuntu.com/SystemdForUpstartUsers

Khi tệp đã sẵn sàng, giả sử bạn đặt tên là 'foo.service' (phần mở rộng .service rất quan trọng)

Bạn cần đặt tập tin vào /lib/systemd/system

Sau đó, bạn cần kích hoạt dịch vụ bằng cách gọi

systemctl enable foo

Điều này sẽ nhắc bạn nhập mật khẩu gốc vì nó sẽ tạo ra các liên kết tượng trưng.

Nếu bạn đã đạt đến đây mà không gặp rắc rối, bạn là tốt. Do đó, dịch vụ của bạn được tạo Bắt đầu bằng cách gọi

sudo service foo start

systemctl status foođể xem trạng thái sudo service foo stopdừng dịch vụ



0

Tôi đã có cùng một vấn đề, đây là giải pháp làm việc cho tôi. Thử:

sudo systemctl daemon-tải lại

sudo systemctl kích hoạt daemon_app.service

sudo systemctl bắt đầu daemon_app.service

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.