Ich denke, in der Vergangenheit, sagen wir, wenn ich einen Ruby on Rails-Server (mithilfe von rails s
) auf einer Bash laufen ließ, zu der ich per SSH verbunden war, und die Internetverbindung unterbrochen wurde, dann
- Der Ruby on Rails-Server würde anhalten
- Der Ruby on Rails-Server lief tatsächlich weiter (ich glaube, das lag an der unterbrochenen VPN-Verbindung) und ich musste
ps ux
alle damit verbundenen Prozesse einzeln beenden ... das war ein wenig chaotisch.
Könnte entweder (1) oder (2) passieren? Gibt es ein klar definiertes Verhalten? Wenn es beispielsweise kein VPN ist, aber die SSH-Verbindung getrennt wurde, dann (1), aber wenn es VPN ist, dann entweder (1) oder (2)?
PS: Ich bin auf die Verwendung umgestiegen, tmux
wenn ich einen Rails-Server darauf ausführen muss, sodass ich einfach zurückkommen und mich tmux a -t foo
wieder damit verbinden und bei Bedarf STRG-C drücken kann.
Antwort1
Ja, die mit der Shell verbundenen Prozesse empfangen das Signal hup. Sie können es ignorieren, wenn sie entsprechend programmiert sind. Siehe man für nohup
.
zB nohup command
um einen Befehl auszuführen, damit es nicht zu einem Problem kommt. Aber auch stdin, stdout, stderr werden umgeleitet.
Siehe auch disown
und&
vollständig abschaltennohup > /dev/null command & disown