Nohup
Entwickler (en) | Verschiedene Open Source und kommerziell Entwickler |
---|---|
Betriebssystem | Unix, Unix-artig, Ibm i |
Plattform | Plattformübergreifend |
Typ | Befehl |
nohup ist ein Posix Befehl, was "kein Aufhängen" bedeutet. Sein Ziel ist es, einen Befehl so auszuführen, dass er die ignoriert Hup (Hangup) Signal und hört daher nicht an, wenn sich der Benutzer abmeldet.
Ausgabe, die normalerweise zum Terminal zu einer Datei namens geht Nohup.out, wenn es noch nicht umgeleitet wurde.
Verwenden
Der erste der folgenden Befehle startet das Programm A B C D
im Hintergrund so, dass das nachfolgende Abmelden es nicht stoppt.
$ Nohup ABCD & $ Ausfahrt
Beachten Sie, dass diese Methoden verhindern, dass der Prozess beim Abmelden ein "Stop" -Signal gesendet wird. Wenn jedoch Eingabe/Ausgabe für diese Standard -E/A -Dateien (STDIN, STDOut oder STDERR) empfangen wird, hängen sie immer noch das Terminal.[1] Sehen Überwindung des Hängens, unter.
NoHup wird oft in Kombination mit dem verwendet Hübsch Befehl zum Ausführen von Prozessen auf einer niedrigeren Priorität.
$ Nohup schön ABCD &
Implementierungen
Einige Muscheln (z. verprügeln) zur Verfügung stellen Muschel gebaut das kann verwendet werden, um zu verhindern SEUFZEND gesendet oder an bestehende Jobs verschickt werden, auch wenn sie nicht mit Nohup begonnen wurden. In Bash kann dies durch Verwendung erhalten werden disuner -h Job
; Durch die Verwendung des gleichen gebauten ohne Argumente wird der Job aus der Jobtabelle entfernt, was auch impliziert, dass der Job das Signal nicht empfängt. Vor Gebrauch verleugnen
Bei einem aktiven Job sollte es von gestoppt werden Strg-Z
und fuhr im Hintergrund von der fort BG
Befehl.[2] Eine weitere relevante Bash -Option ist Shopt Huponexit
, was das HUP -Signal automatisch an Jobs sendet, wenn die Hülle normal aussieht.[3]
Das AIX und Solaris Versionen von Nohup haben a -p
Option, die einen laufenden Prozess verändert, um zukünftige Seufzersignale zu ignorieren. Im Gegensatz zu den oben beschriebenen verleugnen
Bash, Bash, Nohup -p
Akzeptiert Prozess -IDs.[4]
Das nohup Der Befehl wurde auch auf die portiert Ibm i Betriebssystem.[5]
Überwindung des Hängens
Beachten Sie, dass noHupping -Hintergrundjobs normalerweise verwendet werden, um sie zu vermeiden Ssh Sitzung. Ein anderes Problem, das in dieser Situation häufig auftritt, ist, dass SSH sich weigert, sich abzuloggen ("hängt"), da es sich weigert, Daten von/an die Hintergrundjob (n) zu verlieren.[6][7] Dieses Problem kann auch durch überwunden werden Umleitung Alle drei E/O -Streams:
$ nohup ./myprogram> foo.out 2> foo.err < /dev /null &
Beachten Sie auch, dass eine schließende SSH -Sitzung nicht immer ein HUP -Signal an abhängige Prozesse sendet, z. B. wenn a Pseudo-terminal wurde nicht zugewiesen.[8]
Alternativen
- A Terminal Multiplexer Kann einen Befehl in einer separaten Sitzung ausführen, die vom aktuellen Terminal abgelöst wird. Wenn die aktuelle Sitzung endet, läuft die abgelöste Sitzung und ihre zugehörigen Prozesse weiter. Man kann dann später zur Sitzung wieder auftreten.
- Zum Beispiel die folgende Anrufung von Bildschirm Wird somescript.sh im Hintergrund einer abgelösten Sitzung ausgeführt:
$ Bildschirm -a -m -d -s Somename ./somescript.sh &
- Das verleugnen Der Befehl wird verwendet, um Jobs aus der Jobtabelle zu entfernen oder Jobs zu markieren, damit ein Seufzer Signal nicht in der Sitzungsbeendigung gesendet wird.
Verweise
- ^ "Re: Nohup/Ablehnung und Abmelden". Zsh.org. 2005-02-07. Archiviert vom Original am 2009-05-18. Abgerufen 2009-06-10.
- ^ Bash -Referenzhandbuch Archiviert 2010-12-03 bei der Wayback -Maschine. Gnu.org. Abgerufen am 2015-04-13.
- ^ Bash -Referenzhandbuch Archiviert 2010-12-03 bei der Wayback -Maschine. Gnu.org. Abgerufen am 2015-04-13.
- ^ IBM Knowledge Center Archiviert 2014-10-15 in der Wayback -Maschine. 01.ibm.com (2015-03-26). Abgerufen am 2015-04-13.
- ^ IBM. "IBM System I Version 7.2 Programmierung Qshell" (PDF). Abgerufen 2020-09-05.
{{}}
: CS1 Wartung: URL-Status (Link) - ^ "SSH stellte häufig Fragen". Snapelbook.com. Archiviert vom Original am 2009-01-22. Abgerufen 2009-06-10.
- ^ "OpenSSH FAQ". OpenSSH.com. 2005-09-20. Archiviert von das Original am 2009-07-10. Abgerufen 2009-06-10.
- ^ "Bug 396 - SSHD Orphans verarbeitet sich, wenn keine PTY zugewiesen wurde". Bugzilla.mindrot.org. Abgerufen 2009-06-10.