Home · Kontakt · Impressum
contents index previous up next
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-Signal12.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.

12.9.9.1 Beispiele

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 % latex2html id marker 17796
\framebox{
\parbox{161mm}{
\parbox{25mm}{\Large ...
...25mm}{\Large ~ \hfill
\arabic{arbeitsblatt}.\arabic{arbeitsblattseite}
}
}
}

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.
  1. Konsolentyp:
  2. Prozessortyp:
  3. Prozessorgeschwindigkeit:
  4. PCI-Bios:
  5. Swap-Partition:
  6. Kernelversion:
  7. Kernelerstellungsdatum:
  8. 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?

% latex2html id marker 17850
\framebox{
\parbox{161mm}{
\parbox{25mm}{\Large ...
...25mm}{\Large ~ \hfill
\arabic{arbeitsblatt}.\arabic{arbeitsblattseite}
}
}
}

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:


contents index previous up next
Next: 13. Administrative Aufgaben und Up: 12.9 Prozeßadministration Previous: 12.9.8 killall
  © 2004 by IT-Dozent Ole Vanhoefer · Zum Seitenanfang