Prozesse beenden, was bedeutet SIGTERM?

2 Antworten

Signale sind eine der einfachsten Kommunikationsmechanismen, auf Hardwareebene nutzt man entsprechend Interrupts. (Signale werden mitunter als Softwareinterrupts implementiert bzw. können als solche aufgefasst werden - jedes Signal hat einen Signalhandler - vergleiche Interrupthandler - der bei eintreffen des Signals angesprungen und ausgeführt wird)

Ein Signal wird dem Prozess zugestellt, die Nummer (bzw. der symbolische Name) gibt an, was vom Prozess 'erwartet' wird. Die Namen sind dabei relativ selbstredend.

TERMinate bedeutet: Beende Dich selbst geordnet, räume auf und gebe Resourcen frei.

KILL ist auch selbstredend, dieses wird allerdings nicht mehr an den Prozess zugestellt, sondern beendet diesen zwangsweise.(*)

Klassisch wird bei POSIX-Systemen beim herunterfahren allen Prozessen ein SIGTERM übersendet, sollte nach einer gewissen Wartezeit ein Prozess der Aufforderung nicht nachgekommen sein, wird ein SIGKILL hinterhergeschoben.

Es gibt noch diverse weitere Signale.

*https://en.wikipedia.org/wiki/Signal_(IPC)#POSIX_signals

Hier kannst Du auch nachlesen, daß sich das mit SIGKILL etwas komplizierter darstellt.


KarlRanseierIII  06.07.2019, 13:26

Du hattest ja noch eine Frage zu Interrupts/Traps/Signalen gestellt.

Signale können wie gesagt als Softwareinterrupt aufgefasst werden, der Signalhandler ist dann quasi dem Interrupthandler gleichbedeutend.

(Interrupts werden üblicherweise von HW ausgelöst und im Kernel bearbeitet, Signale gehen vom Kernel an Prozesse können aber unterschiedliche Quellen besitzen.Ein HW-Interrupt kann also im Handler des Kernels zu einem Signal werden)

Traps sind synchrone Interrupts auf basis von Ablauffehlern. So kann man Signale wie SEGV also als Trap auffassen.

https://en.wikipedia.org/wiki/Trap_(computing)

1
Gansa 
Fragesteller
 06.07.2019, 14:07

Vielen Dank!

0

Damit wird dem Prozess gesagt "Hey Prozess, sieh zu dass du langsam mal zum Ende kommst." macht aber ansonsten nichts weiter.

SIGTERM ist im Grunde einfach nur eine Aufforderung an den Prozess seine "jetzt genau in diesem Moment" noch offenstehenden Arbeiten zu erledigen und sich dann zu beenden. Allerdings kann der Prozess dieses Signal auch einfach ignorieren.

P.S.: Nummer 9 (SIGKILL) dagegen sagt eher "Nu is Feierabend." und schmeißt den Prozess raus. Das kann der Prozess nicht ignorieren.


Gansa 
Fragesteller
 06.07.2019, 12:56

Danke super erklärt!!

1