SIGSTOP
und SIGKILL
sind zwei Signale, die von einem Prozess nicht erfasst und verarbeitet werden können. SIGTSTP
ist wie die SIGSTOP
Ausnahme , dass es kann abgefangen und behandelt werden.
Die Signale SIGSTOP
und SIGTSTP
stoppen einen Prozess in seinen Spuren, bereit für SIGCONT
. Wenn Sie diesen Prozess a senden, wird SIGTERM
der Prozess nicht ausgeführt, und der Code zum Beenden kann nicht ausgeführt werden.
(Es gibt auch SIGTTIN
und SIGTTOU
- Signale, die von der TTY-Ebene generiert werden, wenn ein Hintergrundjob versucht, Daten auf dem Terminal zu lesen oder zu schreiben. Sie können abgefangen werden, halten den Prozess aber ansonsten an (unterbrechen), genau wie SIGTSTP
. Aber ich gehe jetzt um diese beiden für den Rest dieser Antwort zu ignorieren.)
Ihr CtrlZsendet den Prozess a SIGTSTP
, der anscheinend in keiner Weise speziell von behandelt wird rsyslogd
, so dass er einfach den Prozess pendent SIGCONT
oder aussetzt SIGKILL
.
Die Lösung besteht hier auch darin, SIGCONT
nach Ihrem zu senden, SIGTERM
damit der Prozess das Signal empfangen und verarbeiten kann.
Beispiel:
sleep 999 &
# Assume we got PID 456 for this process
kill -TSTP 456 # Suspend the process (nicely)
kill -TERM 456 # Terminate the process (nicely). Nothing happens
kill -CONT 456 # Continue the process so it can exit cleanly
Die Dokumentation für die GNU C Library erklärt dies ziemlich gut, denke ich (meine Hervorhebung):
Während ein Prozess gestoppt ist, können keine Signale mehr an ihn gesendet werden, bis er fortgesetzt wird , mit Ausnahme von SIGKILL
Signalen und (offensichtlich) SIGCONT
Signalen. Die Signale werden als anstehend markiert, aber erst dann zugestellt, wenn der Vorgang fortgesetzt wird. Das SIGKILL
Signal führt immer zum Abbruch des Prozesses und kann nicht blockiert, verarbeitet oder ignoriert werden. Sie können ignorieren SIGCONT
, aber es führt immer dazu, dass der Prozess trotzdem fortgesetzt wird, wenn er gestoppt wird. Wenn Sie ein SIGCONT
Signal an einen Prozess senden, werden alle anstehenden Stoppsignale für diesen Prozess verworfen. Ebenso werden alle anstehenden SIGCONT
Signale für einen Prozess verworfen, wenn er ein Stoppsignal empfängt
kill -15
bereits gesendeten Daten verarbeitet".