
Linux Ubuntu 14.04 ~/app/serve.pyにスクリプトがある
このフォルダで実行する必要があります。シェルでは次のようにします
> cd ~/app && python serve.py
そしてサーバーを稼働させている
バックグラウンドで起動するサーバーで実行する必要があります。このコマンドをcd ~/app && python serve.py ~
etc/rc.local (および etc/init.d/rc.local) に追加しようとしましたが、起動しません。
何が間違っているのでしょうか?
答え1
/etc/rc.local に追加するのではなくcd ~/app && python serve.py
、パス全体を入力してみてください。init プロセスが ~ がホーム ディレクトリであると認識していることを期待していますが、init は root として起動します。init は root として起動するため、/
ホーム ディレクトリではなく、アプリ ディレクトリを検索します。ホーム ディレクトリへのパスを使用して ~ を削除します。
/home/whitecolor/app/serve.py
.を追加してみてください /etc/rc.local
(pwd
パスウェイ ディレクトリを見つけます) 。スクリプトの先頭にpython
を追加して、serve.py スクリプトの前のを削除します。(通常の場所にインストールされていない場合は、 a と入力してパスを見つけます)#!/usr/bin/python
which python
編集: 「バックグラウンドで実行する」とおっしゃっていましたが、私はそれを見逃しました。コマンドをバックグラウンドで実行するには、&
コマンドの後に を追加します。つまり、上記のコマンドをバックグラウンドで実行するには、 /home/whitecolor/app/serve.py &
Init は通常、ジョブを開始してバックグラウンドで実行するためにバックグラウンド シンボルを必要としません。
&
DrDR の優れた提案では、cron 起動時のコマンドはデフォルトでバックグラウンドで実行されるため、同じ処理は必要ありません。
答え2
これを試す必要はなかったのですが、以下の @reboot で始まる行に似た行を追加することで、システム起動時に cron 経由でスクリプトを実行できるようです。
#m h dom mon dow command
1 * * * * someHourlyCommand
@reboot python /home/<username>/app/serve.py
注意: ディレクトリへの cd を省くためにコマンドを少し変更しました。状況は異なる可能性がありますので、自分に合った方法で行ってください。