Was ist Nohup und wie benutzt du es?
Es gibt viele Befehle auf Linux-Systemen. Es gibt einige, die Sie mehrmals am Tag verwenden werden, und andere sind im Allgemeinen für spezielle Anwendungsfälle reserviert. Nohup ist ein solcher Befehl. Sie werden es nicht jeden Tag benutzen, aber Sie werden dankbar sein, dass es da ist, wenn Sie es brauchen.
Was ist Nohup?
Nohup ist die Abkürzung für "No Hangups". Es ist kein Befehl, den Sie alleine ausführen. Nohup ist ein zusätzlicher Befehl, der das Linux-System anweist, nach dem Start keinen weiteren Befehl zu stoppen. Das bedeutet, dass es weiterläuft, bis es fertig ist, selbst wenn der Benutzer, der es gestartet hat, sich abmeldet. Die Syntax für nohup ist einfach und sieht ungefähr so aus:
nohup sh your-script.sh &
Beachten Sie das "&" am Ende des Befehls. Dadurch wird der Befehl in den Hintergrund verschoben und das Terminal, an dem Sie arbeiten, wird freigegeben.
Nohup arbeitet mit fast jedem Befehl, den Sie im Terminal ausführen. Es kann mit benutzerdefinierten Skripten sowie Standardsystembefehlen und Befehlszeilenprogrammen ausgeführt werden.
Nohup.out
Da nohup unabhängig von dem Benutzer, der es gestartet hat, weiterlaufen kann, benötigt der Befehl irgendwo Nachrichten oder Fehler. Da es kein zu verknüpfendes Terminal gibt, protokolliert nohup alles in einer Ausgabedatei, nohup.out.
Diese Datei befindet sich standardmäßig in dem Verzeichnis, in dem Sie den Befehl gestartet haben. Nohup.out ist etwas einzigartig, da es sowohl die Standardausgabe als auch die Fehlerausgabe zusammen enthält. Nohup leitet beide standardmäßig zu derselben Datei um.
Sie müssen jedoch nicht unbedingt nohup.out verwenden. Es ist nur der Standard. Sie können eine benutzerdefinierte Ausgabe angeben, wenn Sie nohup ausführen und an einem benutzerdefinierten Speicherort platzieren.
nohup sh your-script.sh> /pfad/zu/benutzer.out &
Die benutzerdefinierte Ausgabe enthält genau dieselben Daten wie die Standarddatei nohup.out.
Unterschiede zu Dämonen
Zu diesem Zeitpunkt fragen Sie sich wahrscheinlich, was Nohup von einem dämonischen Prozess unterscheidet. Schließlich scheinen beide dem relativ gleichen Zweck zu dienen, tun es aber wirklich nicht. Daemons laufen kontinuierlich im Hintergrund. Sie sind am besten für Prozesse reserviert, die Sie nie verlassen möchten, wie Server. Sie erfordern auch mehr Arbeit beim Programmieren, weshalb sie nicht für einfache einmalige Skripte geeignet sind.
Nohup ist für eine einmalige Verwendung. Denken Sie an ein Skript, das eine lange Laufzeit braucht, aber letztendlich immer noch zu Ende ist. Vielleicht gibt es eine lange und komplizierte Aufgabe, die Sie hin und wieder ausführen und deren Ausführung Stunden dauert. Sie möchten kein Terminal offen lassen oder einen Benutzer anmelden, also verwenden Sie nohup, um es im Hintergrund laufen zu lassen. Als zusätzlichen Bonus wird automatisch alles für Sie protokolliert.
Sie können sehen, dass Nohup kein alltägliches Werkzeug ist, aber es kann für die richtige Aufgabe sehr nützlich sein. Es liegt irgendwo zwischen einem normalen kurzen Skript und einem kontinuierlich laufenden Daemon. Es hilft Ihnen, bei längeren Skripten, die Sie möglicherweise regelmäßig mit Zeitverschwendung verbracht haben, mehr Zeit mit der Arbeit zu verbringen.