Normalerweise töte ich einen Prozess mit killall
.
killall markdoc
Ich bin mir jedoch nicht sicher, ob dieser Befehl den Vorgang ordnungsgemäß beendet. Erreicht dieser Befehl eine ordnungsgemäße Beendigung? Wenn dies nicht der Fall ist, wie kann ich einen Prozess mit seinem Namen ordnungsgemäß beenden?
Antworten:
Ihre Frage ist nicht klar, Sie sprechen im Titel von einem Daemon, aber im Text nur von einem generischen Prozess.
Für einen Daemon gibt es spezielle Methoden, um ihn zu stoppen, zum Beispiel in Debian
oder
Ähnliche Syntaxen gibt es für andere Initscript-Standards, die in anderen Distributionen / Betriebssystemen verwendet werden.
Um einen Nicht-Daemon-Prozess abzubrechen, können Sie sicher
killall
oder , vorausgesetztpkill
, sie verwenden standardmäßig dasSIGTERM
(15) -Signal, und jede anständige geschriebene Anwendung sollte dieses Signal abfangen und ordnungsgemäß beenden, wenn Sie es empfangen . Berücksichtigen Sie, dass diese Dienstprogramme mehr als einen Prozess beenden können, wenn es mehrere mit demselben Namen gibt.Wenn das nicht funktioniert, können Sie versuchen
SIGINT
(2), dannSIGHUP
(1) und als letztes MittelSIGKILL
(9). Dieses letzte Signal kann von der Anwendung nicht abgefangen werden, sodass keine Bereinigung durchgeführt werden kann. Aus diesem Grund sollte es jedes Mal vermieden werden, wenn Sie können.Beide
pkill
undkillall
akzeptieren einen Signalparameter in der Form-NAME
wie inquelle
markdoc serve &
undsvnserve -d
. Ich denke, es ist eine Art Daemon, aber mir war nichts sicher :)killall
ist der Mörder!Auf BSD-ähnlichen und anderen Distributionen haben Sie häufig Skripte in /etc/rc.d/, die normalerweise das Starten, Neustarten und Stoppen von Daemons in Ihrem System verwalten. Um einen Daemon zu stoppen, würden Sie entweder die Skripte mit dem absoluten Pfad aufrufen, zB:
oder benutze den Befehl:
Ich empfehle dringend, dieses Skript auszuprobieren, um zu zeigen, dass Ihre Systeme Daemons gestartet und gestoppt haben:
quelle
Suchen Sie nach
killproc
im/etc/init.d/functions
Skript verfügbaren Funktionen , geben Sie die Quelle für die Datei ein und verwenden Sie die Funktion. Oder verwenden Siepgrep
undpkill
Dienstprogramme, um zu überprüfen, ob sie bestimmungsgemäß funktionieren, und verwenden Sie sie dann. Beispiel:pkill -SIGTERM mysqld
würde das TERM-Kill-Signal senden, damit mysqld ein sicheres Herunterfahren durchführt und die Datenbanken auf die Festplatte spült, bevor sie getötet werden.quelle