• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Frage zu nohup

Hallo,

ich dachte immer das ein Prozess, welcher im hintergrund gestartet wurde, beendet wird sobald auch der Parentprozess beendet wird.
Ausser wenn der prozess mit nohup gestartet wurde. Bei meinem SuSE 9.3 ist das aber nicht der Fall. Hier läuft jeder Prozess weiter egal ob mit
no hup gestartet oder ohne.

Verwechsel ich da was?
 
juhu schrieb:
ich dachte immer das ein Prozess, welcher im hintergrund gestartet wurde, beendet wird sobald auch der Parentprozess beendet wird. Ausser wenn der prozess mit nohup gestartet wurde.
Im Prinzip ja!
nohup ignoriert das signal Nr. 1.
"man 7 signal" sagt:
Code:
SIGHUP        1       Term    Hangup detected on controlling terminal
                              or death of controlling process
Bei meinem SuSE 9.3 ist das aber nicht der Fall. Hier läuft jeder Prozess weiter egal ob mit nohup gestartet oder ohne.
Hmm, programmtechnisch kann man alle Signale außer SIGKILL (Nr. 9) mit "trap" abfangen. Kannst du ein Beispiel posten?
 
A

Anonymous

Gast
juhu schrieb:
z. B.
sleep 20000&

gutes Beispiel :lol:
sleep macht weiter nichts als auf ein Signal zu warten.

starte mal ein sleep und gehe in das Verzeichniss /proc/PID
und gib mal die Ausgabe von cat status
da steht aufgeschlüsselt wie er mit welchem Signal umgehen soll.
normal währe zB für ein sleep :
Code:
SigPnd: 0000000000000000
ShdPnd: 0000000000000000
SigBlk: 0000000000000000
SigIgn: 0000000000000000
SigCgt: 0000000080000000
CapInh: 0000000000000000
CapPrm: 00000000fffffeff
CapEff: 00000000fffffeff

robi
 
Ganst Du mir bitte genau sagen, was ich in der /proc/PID/status
sehen kann. Oder kannst Du mir ein Buch empfehlen bzw. Doku wo
man sowas gut verständlich nachlesen kann.

Gruss
 
A

Anonymous

Gast
Code:
SigPnd: 0000000000000000 
SigBlk: 0000000000000000 
SigIgn: 0000000000000000 
SigCgt: 0000000080000000
in diesen Zeilen ist Bitweise vermerkt welches Signal vom Prozess wie verarbeitet wird. Dabei ist das SIGHUP das niedrigste Bit
Was die einzelnen Zeilen genau bedeuten, müsste ich auch erst suchen, SigIng ist jedenfalls das das Signal einfach Ignoriert wird. SigBlk könnte geblockt sein und eines der anderen beiden sollte aufzeigen, dass bei Eintreffen dieses Signals eine definierte Funktion oder Routine durchlaufen wird.

Jedenfalls kann man hier nachschauen, ob für einen Prozess ein Signal eine besondere Bedeutung hat, oder ob das Signal zum normalen Beenden des Prozesses führt.

robi
 
Oben