Windows - Führen Sie den Prozess im Hintergrund aus, nachdem Sie cmd geschlossen haben
15
Ich habe ein Python-Skript, das ich als Hintergrundprozess unter Windows ausführen möchte.
Ich kann das unter Linux machen mit:
python script.py &
und trennen Sie dann den Prozess vom Terminal mit:
disown
Unter Windows habe ich bisher nur Folgendes:
start /b python script.py
Wenn ich jedoch das CMD-Fenster schließe, wird das Skript nicht mehr ausgeführt. Gibt es einen zusätzlichen Befehl, den ich hier vermisse, um das Skript im Hintergrund laufen zu lassen?
startsollte schon die richtige Richtung sein. Allerdings /bhängt sie an der gleichen Konsole. Das Problem besteht nun darin, dass beim Schließen eines Konsolenfensters auch alle mit dieser Konsole verbundenen Prozesse geschlossen werden.
Sie können entweder startohne verwenden /b, dann wird es in einer neuen Konsole ausgeführt. Wenn Sie es jedoch im Hintergrund ohne Konsolenfenster ausführen möchten, müssen Sie ein VBScript-Tool oder ein Tool eines Drittanbieters verwenden: Führen Sie eine Batchdatei auf völlig versteckte Weise aus
In diesem Fall wird die Ausgabe stdout / stderr jedoch nicht mehr angezeigt. Sie können es jedoch in eine Datei umleiten, indem Sie es in einen cmd /c your_command > stdout.txt 2> stderr.txtAufruf einschließen und diese über eine der oben genannten Methoden (VBScript, Drittanbieter-Tool, ...) starten.
Alternativ können Sie vor dem Beenden auch Ihr eigenes Konsolenfenster ausblenden. Ich habe gerade ein kleines einzeiliges Programm geschrieben, das genau das tut (Quellcode ist im Grunde ShowWindow(GetConsoleWindow(), SW_HIDE)): http://share.cherrytree.at/showfile-24286/hide_current_console.exe
Auf diese Weise können Sie verwenden start /b, und wenn Sie Ihre Konsole "schließen" möchten (technisch ausblenden), würden Sie ausführen, hide_current_console & exitwodurch die Konsole ausgeblendet und dann der Prozess cmd.exe (nicht der Python-Prozess) geschlossen wird - in einer Zeile, da Sie nicht tippen können, exitnachdem die Konsole bereits ausgeblendet wurde.
Woher hide_current_consolekommt das? Funktioniert nicht auf einem W10-PC.
Btc Sources
1
Ich habe es erneut getestet, es funktioniert immer noch. Woher es kommt: Bitte lesen Sie den Beitrag noch einmal, ich habe die eine Zeile des Quellcodes dieser Datei gezeigt und eine kompilierte Datei hide_current_console.exe zum Herunterladen verknüpft ...
CherryDT
-2
Ich fand, dass Folgendes für mich gut funktioniert hat:
Oh, und unter Linux anstelle von background ( &) und disownich würde vorschlagen, zu verwenden nohup.
Nikc
5
Dieser in eine Windows-Cmd-Shell eingegebene Befehl gibt den folgenden Fehler aus : 'run' is not recognized as an internal or external command, operable path or batch file..
hide_current_console
kommt das? Funktioniert nicht auf einem W10-PC.Ich fand, dass Folgendes für mich gut funktioniert hat:
quelle
&
) unddisown
ich würde vorschlagen, zu verwendennohup
.'run' is not recognized as an internal or external command, operable path or batch file.
.