私はubuntuサーバーでアプリケーションを実行したままにしているので、Googleはpingを実行できますが、ログアウトするとアプリがシャットダウンし続けます。
Nodeshellアプリをsupervisor
で起動して、変更を監視します(シェルスクリプトを使用)
Nohup
のようなコマンドを見つけましたが、service httpd start
のような単純なコマンドを入力する以外のバックグラウンドサービスの実行に関しては、CentOSのApacheでうまく機能するようです。
サービスを実行するために別のユーザーを作成する必要がありますか? Ubuntu 10.04のLinodeインスタンスがあります
run.sh
cd myapp/src/main/node
supervisor -w "myapp/src/main/node,myapp2/src/main/node,./" run-apps.js
これを試して:
Nohup supervisor -w "myapp/src/main/node,myapp2/src/main/node,./" run-apps.js &
他のいくつかの方法:
終了する理由は、ログアウトして親シェルを終了すると、スクリプトがHUPシグナルを受信し、STDOUTおよびSTDERRへの書き込み機能を失うためです。
4つのオプションがあります(「正確さ」と「クリーンさ」の順に)。
screen
セッションでスクリプトを実行するNohup
を使用してスクリプトを実行しますdisown
sし、関連するSTDOUTチャネルとSTDERRチャネルを閉じる、かなり複雑なbashスクリプトを作成します。Nohup
なしでこれを行う別の方法を次に示します。
例えば。:
$ jobs
$ sleep 300 &
[1] 79844
$ jobs
[1] + running sleep 300
$ disown %1
$ jobs
$ pgrep sleep
79844
説明:
jobs
を使用してバックグラウンドジョブを表示します。sleep 300
jobs
を使用してください。 sleep
のPIDは79844で、ジョブ#1です。jobs
を使用してください。バックグラウンドジョブはありません。pgrep
を使用して、sleep
という名前のプロセスを検索します。 1つあり、PID 79844(同じPID)があります。取り消されたジョブに影響を与えずに、ターミナルを閉じたりログアウトしたりできます。
これには、Nohup.out
ファイルを残さないという利点がありますが、STDOUT
に書き込まれたものもすべて失われます。