<myapp> .serviceの開始に失敗しました:ユニット<myapp> .serviceが見つかりません


13

Pythonボット用の超基本的なinit.dスクリプトを作成しました。

#!/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

そして、設定しているtorbot.pyこと+xと、#!/usr/local/bin/python一番上に。実際に起動しようとすると、次のようになります:

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

何か不足していますか?

回答:


4

ubuntu 16.04以降を使用している場合は、サービスファイルの作成に関するsystemdのドキュメントを確認してください。

このスクリプトは古いinitシステム用であり、レガシー互換性レイヤーによって管理されます。


2

私は、Ubuntu 16.04を使用しています。

最初にinit関数を変更します

. /etc/init.d/functions

. /lib/lsb/init-functions

次に、シェルで、/ etc / rc *からスクリプトへのシンボリックリンクを作成します。

sudo update-rc.d <myapp> defaults 95

ここで95はどういう意味ですか?
ガーマン

@ガーマンそれは優先順位です
ターソン

1

OK、このstackoverflow answer(17.04でupstartスクリプトを実行していますか?

  1. 17.10のUbuntu
  2. Gunicorn 19.xサーバーにpythonアプリがあります。このアプリケーションをサービスとして起動する必要があります。

まず、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

「=」記号の左側にあるすべての単語の意味と(以前の)upstartの同等の用語は、リンクhttps://wiki.ubuntu.com/SystemdForUpstartUsersにあります。

ファイルの準備ができたら、「foo.service」という名前を付けましょう(.service拡張子が重要です)

ファイルを配置する必要があります /lib/systemd/system

その後、呼び出してサービスを有効にする必要があります

systemctl enable foo

シンボリックリンクを作成するため、rootパスワードの入力を求められます。

あなたが手間をかけずにここまで到達した場合、あなたは良いです。したがって、サービスは作成されます。

sudo service foo start

systemctl status foosudo service foo stopサービスを停止するステータスを確認するには



0

私は同じ問題を抱えていました、これは私のために働いた解決策です。試してください:

sudo systemctl daemon-reload

sudo systemctl enable daemon_app.service

sudo systemctl start daemon_app.service

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.