Windows-コマンドを閉じた後にバックグラウンドでプロセスを実行する


15

Windowsでバックグラウンドプロセスとして実行したいPythonスクリプトがあります。

私はLinuxでそれを行うことができます:

python script.py &

そして、次のコマンドでターミナルからプロセスを切断します:

disown

Windowsでは、これまでのところこれだけです:

start /b python script.py

ただし、CMDウィンドウを閉じると、スクリプトの実行が停止します。スクリプトをバックグラウンドで実行し続けるためにここで欠けている追加のコマンドはありますか?

回答:


6

startすでに正しい方向でなければなりません。ただし、/b同じコンソールに接続します。ここでの問題は、コンソールウィンドウが閉じられると、このコンソールに関連付けられているすべてのプロセスも閉じられることです。

startなし/bで使用しても、新しいコンソールで実行されます。コンソールウィンドウを使わずにバックグラウンドで実行する場合は、VBScriptまたはサードパーティのツールを使用する必要があります。バッチファイルを完全に非表示の方法で実行します。

ただし、その場合、stdout / stderrの出力は表示されなくなります。ただし、cmd /c your_command > stdout.txt 2> stderr.txt呼び出しでラップし、前述のメソッド(VBScript、サードパーティツールなど)のいずれかを使用してこれを開始することにより、ファイルにリダイレクトすることもできます。

または、終了する前に独自のコンソールウィンドウを非表示にすることもできます。私はちょうどそれを行う小さな1行のプログラムを書きました(ソースコードは基本的にですShowWindow(GetConsoleWindow(), SW_HIDE)):http : //share.cherrytree.at/showfile-24286/hide_current_console.exe

このようにして、を使用できstart /bます。コンソールを「閉じる」(技術的には非表示にする)場合はhide_current_console & exit、コンソールを非表示にしてからcmd.exeプロセス(Pythonプロセスではない)を閉じるコマンドを実行します-1行で、exitコンソールがすでに非表示になっていると入力できません。


どこhide_current_consoleから来たの?W10 PCでは動作しません。
Btcソース

1
もう一度テストしましたが、まだ機能します。それがどこから来たのか:投稿をもう一度読んでください、このファイルのソースコードの1行を示し、ダウンロードしたコンパイル済みのhide_current_console.exeファイルをリンクしました...
CherryDT

-2

私は以下がうまくいったことを発見しました:

run python script.py

1
ああ、そしてLinuxではバックグラウンド(&)ではなく、のdisown使用をお勧めしnohupます。
nikc 2017

5
そのコマンドをWindowsのcmdシェルに入力すると、次のエラーが発生します'run' is not recognized as an internal or external command, operable path or batch file.
markhep 2018年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.