ここで奇妙な質問ですが、私はLinuxサーバーでpythonチャットサーバー/クライアントコンボを使用しています。現在、これを行うと、
$: cd /path/to/chat/server
$: Sudo python ChatServer_Listen.py
これにより、pythonアプリ実行ループが開始され、サーバーは着信TCP接続をリッスンします。
私の問題は、ターミナルウィンドウを閉じると、sshセッションが終了してpythonアプリが実行を停止し、クライアントが接続できなくなることです。ターミナルインスタンスを24時間年中無休で実行したくありません。ローカルでこのpythonアプリをLinuxのバックグラウンドで実行できるものとして設定できますか?その場合、どのように設定しますか?理想的には、サービスとして実行されるApacheのようなものです。
助けてくれてありがとう!
Nohup python ChatServer_Listen.py &
を使用できます
Nohup
は、プログラムの出力をNohup.out
ファイルに記録します。
プログラムを停止するには、kill your_pid
コマンドを使用する必要があります。
これを行う正しい方法は、プロセスを正しくデーモン化するようにコードを変更することです。これを行う1つの方法は、daeminize
モジュールを使用することです。
これを行う適切な方法は、変更できないソフトウェアでも機能し、次のように開始することです
Nohup python ChatServer_Listen.py >logfile.txt 2>&1 </dev/null &
Sudo
を使用していないことに注意してください。これは、上記の行をシェルスクリプトに入れ、Sudoを使用してシェルスクリプトを実行する必要があるためです。
Supervisor を使用します。これはまさにこの目的のために作られています。加えて、プロセスが停止した場合にプロセスを再起動したり、それを制御するためのWebベースのGUIを提供したりします.
ログオフ後もプロセスを存続させる簡単な方法は、 screen を使用することです。
ここで説明したように:
https://stackoverflow.com/questions/625409/how-do-i-put-an-already-running-process-under-Nohup
」
Bashのジョブコントロールを使用して、プロセスをバックグラウンドに送信します。
[crtl] + z
bg
また、Sam/Janが述べたように、ターミナルを閉じた後にプロセスが強制終了されないように、disownを実行する必要があります。
disown -h
」