web-dev-qa-db-ja.com

GitのWindowsインストーラーに付属しているGitBashターミナルからプロセスを勘当/切り離すにはどうすればよいですか?

ターミナル(主にPythonサーバー)からコマンドを実行し、基本的にそれらをデーモン化したい。Git用のWindowsインストーラーに付属しているMinGWターミナル「GitBash」を実行しています。

動作しない動作しないことを試みました:

  • Nohup->コマンドが見つかりません
  • setsid->コマンドが見つかりません
  • $ script.py &->期待どおりに動作しない
  • $ script.py & disown->期待どおりに動作しない

bgを使用しますが、最終目標は、サーバーがすべて実行された後にターミナルを閉じ、notプロセスを強制終了することです。

6
burfl

これは、 [〜#〜] 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ウィンドウでホストされています。

はるかに ここ

3
antonio

これがWindowsのbashで機能するかどうかはわかりませんが、bashには、バックグラウンドプロセスを「勘当」するための組み込みコマンドが用意されています。 bgでジョブのバックグラウンドを取得したら、disownを実行します。デフォルトでは、最新のbg- edジョブを勘当しますが、複数のバックグラウンドジョブがある場合は、ジョブ番号を指定することもできます。

詳細はこちら ジョブ制御ビルトイン

1
Isaac Freeman

コマンドの前にstartを付けるだけです。

例えば。

start TortoiseGitProc /command:showcompare /revision1:master /revision2:HEAD

生成されたプロセスは、現在の作業ディレクトリを継承します。

0
RyanCu