ターミナル(主にPythonサーバー)からコマンドを実行し、基本的にそれらをデーモン化したい。Git用のWindowsインストーラーに付属しているMinGWターミナル「GitBash」を実行しています。
動作しない動作しないことを試みました:
$ script.py &
->期待どおりに動作しない$ script.py & disown
->期待どおりに動作しないbg
を使用しますが、最終目標は、サーバーがすべて実行された後にターミナルを閉じ、notプロセスを強制終了することです。
これは、 [〜#〜] so [〜#〜] の同様の質問に対する私の長い回答からの統合です。
アプリがstdout/stderrにログを記録する場合は、次を使用します。
cmd //c start cmd //k "path\\to\\script-dir\\script.py"
ソケットなどを介してファイルにログを記録し、stdout/stderrが必要ない場合は、次を使用します。
cmd //c start //D "path\\to\\script-dir" script.py
どちらの場合も、bashを閉じても存続するプロセスのようなデーモンを取得します。最初の例では、スクリプトは表示されているcmd.exe
ウィンドウでホストされています。
はるかに ここ 。
これがWindowsのbashで機能するかどうかはわかりませんが、bashには、バックグラウンドプロセスを「勘当」するための組み込みコマンドが用意されています。 bg
でジョブのバックグラウンドを取得したら、disown
を実行します。デフォルトでは、最新のbg
- edジョブを勘当しますが、複数のバックグラウンドジョブがある場合は、ジョブ番号を指定することもできます。
詳細はこちら ジョブ制御ビルトイン 。
コマンドの前にstart
を付けるだけです。
例えば。
start TortoiseGitProc /command:showcompare /revision1:master /revision2:HEAD
生成されたプロセスは、現在の作業ディレクトリを継承します。