Next: 13. Administrative Aufgaben und
Up: 12.9 Prozeßadministration
Previous: 12.9.8 killall
Unterabschnitte
12.9.9 nohup
Der Befehl
nohup startet ein Programm und schützt dieses vor dem Hangup-Signal
12.6 SIGHUB.
nohup KOMMANDO
Wenn das KOMMANDO die Standardausgabe und Standardfehlerausgabe aufs Terminal benutzt, so wird diese umgeleitet auf die Datei nohup.out. Sollte dies nicht klappen wird versucht die Ausgabe in die Datei $HOME/nohup.out
umzuleiten. Klappt dies wieder erwarten auch nicht, dann verweigert nohup die Ausführung des Kommandos. Die Datei nohup.out wird nur mit Rechten für den Besitzer erstellt. Bei bereits vorhandenen nohup.out-Dateien werden die Rechte nicht angefaßt.
Die Kommandos werden nicht automatisch in den Hintergrund gebracht. Dazu ist ein abschließendes Kaufmännisches Und (&
) nötig. Auch die Prozeßpriorität wird nicht verändert. Hier ist zusätzlich der Befehl nice (12.9.1) notwendig.
Der Befehl wurde entwickelt um Programme auch nach dem Ausloggen weiter laufen zu lassen. Normalerweise bekommen auch Programme, die in den Hintergrund verschoben wurden und dort laufen, beim Ausloggen das Signal SIGHUP gesendet. Die führt, wenn der Programmierer es nicht explizit abfängt, zum Abbruch des Programms. Allerdings kann ich diesen Effekt bei einer SuSE 9.0 nicht nachvollziehen. Auch normal im Hintergrund gestartete Prozesse liefen nach dem Abmelden und Anmelden immer noch. Sie hatten zwar Ihren Elternprozess verloren, waren aber noch immer aktiv.
Als Endestatus bzw. Fehlercode von nohup kommen die Werte 126 und 127 in Frage. Bei 126 wurde das KOMMANDO zwar gefunden, konnte aber nicht gestartet werden. Dagegen konnte bei 127 das KOMMANDO nicht gefunden werden oder nohup hat einen Fehler. Ansonsten werden die Fehlercodes des KOMMANDO weitergereicht.
Das Signal SIGHUP hat keine Auswirkung auf die
nohup gestarteten Programme.
ole@enterprise:~/test> tail -f /var/log/warn > warn.log &
[2] 6082
ole@enterprise:~/test> kill -s SIGHUP 6082
[2]+ Aufgelegt tail -f /var/log/warn >warn.log
ole@enterprise:~/test> nohup tail -f /var/log/warn > warn.log &
[2] 6087
ole@enterprise:~/test> kill -s SIGHUP 6087
ole@enterprise:~/test> ps -e | grep tail
6087 pts/6 00:00:00 tail
Die Standardausgabe wird umgeleitet in die Datei nohup.out, die mit sehr strengen Rechten versehen ist.
ole@enterprise:~/test> nohup tail -f /var/log/warn &
[1] 6108
nohup: appending output to `nohup.out'
ole@enterprise:~/test> ls -l
insgesamt 4
-rw------- 1 ole users 655 2004-06-24 23:10 nohup.out
Notizen:
Notizen:
Bootvorgang und Prozesse
-
418
- Beenden Sie das X-Window-System und arbeiten Sie nur mit den Terminals.
-
419
- Ermitteln Sie die folgenden Daten aus den Bootmeldungen des Kernels.
- Konsolentyp:
- Prozessortyp:
- Prozessorgeschwindigkeit:
- PCI-Bios:
- Swap-Partition:
- Kernelversion:
- Kernelerstellungsdatum:
- Geräte:
-
420
- Für welchen Zweck wird das Programm fsck verwendet?
-
421
- Loggen Sie sich auf Terminal 1 als root ein.
-
422
- Lassen Sie sich die Informationen über die Auslastung des Systems (CPU und Speicher) anzeigen.
-
423
- Beenden Sie die Anzeige und löschen Sie den Bildschirm!
-
424
- Suchen Sie im ganzen Dateisystem nach Dateien, die den Rechnernamen enthalten. Starten Sie den Befehl als Hintergrundprozeß und achten Sie auf Datenumleitung!
-
425
- Lassen Sie sich die Prozeßnummer Ihrer Prozesse anzeigen! Finden Sie speziell die Prozeßnummer des Hintergrundprozesses heraus!
-
426
- Killen Sie den Hintergrundprozeß!
-
427
- Prüfen Sie, ob grep trotzdem Informationen in Dateien abgelegt hat!
-
428
- Lassen Sie sich die Prozeßnummern aller Prozesse anzeigen! (Welche Prozeßnummer hat der init-Prozeß?)
-
429
- Lassen Sie sich ausführliche Informationen zu allen laufenden Prozessen anzeigen! Welcher Terminal kontrolliert den init-Prozeß, von welchem Prozeß stammt der init-Prozeß und gibt es sonst irgendeinen Prozeß der nicht von init abstammt?
-
430
- Starten Sie nun den Editor vi.
-
431
- Stoppen Sie vi ohne das Programm zu beenden.
-
432
- Starten Sie den Befehl aus Aufgabe 7 als Hintergrundprozeß. Merken Sie sich die Job-ID.
-
433
- Starten Sie das X-Window-System (startx) ohne das die Konsole blockiert wird. Wechseln Sie, falls nötig, zur Konsole zurück (<Strg>+<Alt>+<F1>).
-
434
- Beenden Sie den in Aufgabe 15 gestarteten Hintergrundprozeß.
-
435
- Kehren Sie zu vi zurück und schreiben Sie die Job-ID aus Aufgabe 15 in den Text.
-
436
- Stoppen Sie vi wieder.
-
437
- Starten Sie nun den Editor joe.
-
438
- Stoppen Sie joe ohne das Programm zu beenden. Welches Problem tritt auf?
-
439
- Lassen Sie sich alle Jobs anzeigen.
-
440
- Lassen Sie sich alle Prozesse in der Baumansicht anzeigen.
-
441
- Kehren Sie zu joe zurück, holen Sie den Prozeß in den Vordergrund und beenden Sie das Programm.
-
442
- Kehren Sie zu vi zurück und schreiben Sie den Satz: ``Mit den Aufgaben ist jetzt Schluß.'' Speichern Sie den Text als /root/blubber.txt ab und beenden vi.
Notizen:
Next: 13. Administrative Aufgaben und
Up: 12.9 Prozeßadministration
Previous: 12.9.8 killall