Wie entferne ich einen Prozess vom Git Bash-Terminal, das mit Gits Windows-Installationsprogramm geliefert wird?

3468
burfl

Ich möchte Befehle vom Terminal (meistens Python-Server) ausführen und sie im Wesentlichen dämonisieren. Ich verwende das MinGW-Terminal "Git Bash", das mit dem Windows-Installationsprogramm für Git geliefert wird.

Dinge versucht, die nicht funktionieren:

  • nohup -> Befehl nicht gefunden
  • setsid -> Befehl nicht gefunden
  • $ script.py & -> verhält sich nicht wie erwartet
  • $ script.py & disown -> verhält sich nicht wie erwartet

Ich würde verwenden bg, aber mein Endziel ist es, das Terminal zu schließen, nachdem meine Server alle laufen, und die Prozesse nicht zu beenden .

5

2 Antworten auf die Frage

3
antonio

Dies ist eine Synthese aus meiner längeren Antwort auf eine ähnliche Frage in SO .

Wenn sich Ihre App bei stdout / stderr anmeldet, verwenden Sie Folgendes:

cmd //c start cmd //k "path\\to\\script-dir\\script.py" 

Wenn es sich in Dateien, über Sockets usw. einloggt und Sie stdout / stderr nicht benötigen, verwenden Sie:

cmd //c start //D "path\\to\\script-dir" script.py 

In beiden Fällen erhalten Sie einen daemonartigen Prozess, der überlebt, wenn Sie bash schließen. Zunächst wird Ihr Skript in einem sichtbaren cmd.exeFenster gehostet .

Viel mehr hier .

1
Isaac Freeman

Ich habe keine Ahnung, ob dies in Bash unter Windows funktioniert, aber Bash stellt einen integrierten Befehl zum "Ablehnen" eines Hintergrundprozesses bereit. Nachdem Sie den Job mit bgnur Hintergrund ausgeführt haben disown. Standardmäßig wird der zuletzt ausgeführte bgJob deaktiviert, Sie können ihm jedoch auch eine Jobnummer geben, wenn Sie mehrere Hintergrundjobs haben.

Weitere Informationen finden Sie unter Integrierte Jobsteuerungen .

Thank you, but like I stated in the original post, disown doesn't seem to be behaving as expected. Clearly, the problem is the Windows bash terminal; I was just hoping there were alternative ways to do this that I could try. burfl vor 10 Jahren 0