Nohup und der Unterschied zwischen Abmelden und Beenden auf einer Remote-Shell

Nohup und der Unterschied zwischen Abmelden und Beenden auf einer Remote-Shell

Ich habe für Arbeitszwecke Zugriff auf eine Remote-Linux-Shell. Ich habe ein Python-Skript im Hintergrund laufen lassen, das verwendet wird nohup.

Wenn ich nun die Sitzung beenden möchte, was ist der Unterschied zwischen der Verwendung von logout- und exit-Befehlen? Wird mein Skript in beiden Fällen weiter ausgeführt?

Antwort1

logoutist ein interner Befehl der Shell. Die Antwort ist also im Allgemeinen Shell-abhängig. Von man bash:

logout– Beenden Sie eine Login-Shell.

Aus man zsh:

logout [ n ]– Dasselbe wie exit, außer dass es nur in einer Login-Shell funktioniert.

Sie sind also völlig gleich, aber die Abmeldung funktioniert bei Nicht-Login-Shells einfach nicht. Was eine Login-Shell ist, können Sie in den Manualpages nachlesen.

Antwort2

Probieren Sie beides in Ihrem lokalen Terminal aus. Wenn Sie „logout“ verwenden möchten, müssen Sie „login“ sein. In Ihrem Terminal starten Sie die Shell standardmäßig nie mit Login. Wenn Sie das Terminal also schließen möchten, müssen Sie „exit“ verwenden. Es ist keine „Login-Shell“.

In der Remote-SSH-Shell ist das gleichgültig, da Sie eine „Login-Shell“ verwenden. Wenn Sie Nohub oder Ähnliches verwenden, „trennen“ Sie den Befehl von der eigentlichen Shell, sodass der Prozess beim Schließen Ihrer Shell nicht beendet wird.

verwandte Informationen