Unix - Bitte nicht aufhängen - nohup
Gelegenheitsadministratoren aus dem Windows-Umfeld dürfte der Unix-/Linux-Befehl nohup (no hang up) wenig sagen. Unter Unix benötigt man das Kommando nohup, um Prozesse im Hindergrund laufen zulassen, auch wenn man das ausführende Shell-Fenster schliesst. Somit läuft ein Prozess mittels nohup ähnlich, wie dies auch für Unix-Demons und unter Windows für die Windows-Dienste gilt.
Hier ein einfaches Beispiel für einen nohup-Aufruf:
nohup bin/runProgram.sh &
Durch den Aufruf mit nohup wird das Programm von SIGHUP nicht mehr beendet, und man kann sich problemlos aus der ausführenden Shell ausloggen. Wichtig ist auch noch, dass nach absetzen des Befehls das Terminal für Ausgaben nicht zur Verfügung steht. Die Ausgabe des Prozesses, die normalerweise auf dem Terminal angezeigt wird, wird nun in die Datei nohup.out umgeleitet. Falls dies nicht gewünscht ist, können STDOUT und STDERR über eine Named Pipe auch in andere Log-Dateien umgelenkt werden.
Aufruf mittels nohup und umleiten der Ausgabeströme:
nohup bin/runProgram.sh 1>/var/log/out.log 2>/var/log/err.log &
Man sieht, dass das Kommando nohup zwar ein praktisches Progrämmchen ist - allerdings mit einigen Ecken und Kanten, die es beim Einsatz zu beachten gilt.
Die Zeitschrift iX hat hierzu einen sehr interessanten Beitrag veröffentlicht, in dem der nohup-Befehl unter Unix nochmals vorgestellt und auf evtl. Probleme und Lösungsmöglichkeiten hingewiesen wird.
Link: iX - Für Langläufer
Näheres zu meiner Person findet Ihr unter
Cooler Tipp! Echt nützlich, wusste ich nicht. Hab deinen Blog kürzlich gefunden, toller Inhalt :)