Lassen Sie ein Programm nach dem Schließen einer Konsole laufen, nachdem das Programm gestartet wurde [duplizieren]

8

Mögliches Duplikat:
Wie trenne ich einen Prozess vollständig vom Terminal?

Ich habe ein Programm, das in einer Unix-Konsole auf einem Remote-Unix-Computer ausgeführt wird. Ich habe es (dumm) nicht mit ausgeführt nohup &, und jetzt muss ich die lokale Konsole schließen.

Gibt es eine Möglichkeit, die Remote-Ausführung nach dem Schließen der lokalen Konsole fortzusetzen?

Geworfen
quelle

Antworten:

12

Wenn Ihre Shell ist bash, können Sie sie verwenden disown. Strg-Z, um den Prozess disown -hanzuhalten und ihn dann dazu zu bringen, kein SIGHUP zu empfangen.

Douglas Leeder
quelle
Geniale Lösung. Es hat funktioniert :-)
Thrawn
3
Nur neugierig: Wenn der Prozess unterbrochen wird, sollte dies nicht irgendwann folgen bgoder so? Oder wird disown -hes auch wieder aufgenommen?
Arjan
Funktioniert dies, wenn der Prozess im Inneren ausgeführt wird screen? Ich möchte den Prozess xtermstattdessen in meinem regulären Prozess fortsetzen .
Stimmen
IIRC einmal abgelehnt, wird es nicht mit einem Terminal verbunden
Douglas Leeder
5

Unter Solaris 9 können Sie nohup -p <pid>einen laufenden Prozess nicht starten. Hier ist eine interessante Erklärung der Implementierung. Ich weiß nicht, ob dies auf anderen Unices implementiert wurde.

Coneslayer
quelle
nohup: ungültige Option - p Funktioniert nicht unter Gentoo, Ubuntu oder Fedora (die Unixe, auf denen ich das ausprobiert habe), aber trotzdem danke :-) Gut zu wissen, dass Solaris es hat.
Geworfen am
2

Strg-Z, um den Prozess bganzuhalten und das Programm in den Hintergrund zu rücken und weiter auszuführen, bis es abgeschlossen ist.

Matrix Mole
quelle
Das Problem ist, dass beim Schließen der Konsole auch die Hintergrundprozesse gestoppt werden. Ich brauche etwas, das den Prozess von der Konsole löst, wie es nohup tut, aber nachdem der Prozess gestartet wurde :-)
Thrawn
Und ich denke nicht, dass 'nohup bg &' auch funktionieren wird :-(
Thrawn
1
Ich habe es auf einem meiner Systeme versucht und es lief du / >> tempeinwandfrei, als ich mich abmeldete (nur als Testprogramm verwendet), aber ich verstehe, dass ich zögere, wenn Sie das Programm oder die Ergebnisse nicht verlieren möchten.
Matrix Mole
2

Wenn Sie es sich leisten können, das Programm vor dem Abmelden zu stoppen und neu zu starten, stoppen Sie es und starten Sie es über den Bildschirm neu. Dies ist ein Muss für jeden, der Remoteverbindungen zum Unixen von Hosts verwendet.

Geek
quelle
1
Ich denke, das Hauptproblem hier ist genau, dass er das Programm nicht stoppen möchte.
Gnoupi
1
Ja, ich möchte, dass das Programm nicht gestoppt wird :-)
Thrawn
Ich würde den Bildschirm für die zukünftige Verwendung einer solchen Situation wärmstens empfehlen (ich habe so ziemlich immer eine Bildschirmsitzung auf jedem System, auf dem ich ein sehll o habe).
Matrix Mole
1
Einige Jahre später wurde mir klar, dass ich ein Dummkopf war, keinen Bildschirm zu benutzen :-)
Thrawn