Wie man einen Dämon in Linux tötet?

952
Arslan Ali

Hinweis: Bevor Sie diese Frage als Duplikat markieren, beachten Sie, dass ich alle Lösungen ausprobiert habe, die online verfügbar sind. Ich kann das Problem jedoch immer noch nicht lösen.

Ich führte den Daemon durch den folgenden Befehl:

rake resque:work QUEUE='*' & 

Es hat mich zurückgegeben 13031. Nun möchte ich diesen Dämon töten, und ich habe folgende Befehle ausprobiert:

kill -9 13031 kill 13031 

Wenn Sie beide Befehle ausführen, heißt es: -bash: kill: (13031) - No such processund jetzt stecke ich fest. Ich kann nicht herausfinden, wie ich den Dämon töten kann.

1
`pgrep` für den daemon? Reuben L. vor 8 Jahren 2
Was ist mit "pkill -9 rake" oder um die rubinrote Instanz des Rakes zu töten? Hastur vor 8 Jahren 0

1 Antwort auf die Frage

3
anishsane

Ich habe eine mögliche Theorie dafür.

Wenn Sie die Anwendung als ausführen

$ rake resque:work QUEUE='*' & [1] 13031 

Die Anwendung führt intern eine fork+exitAusführung im Hintergrund aus.

C Code-Äquivalent dazu wäre:

if(fork()) exit(0); 

Der Prozess mit PID==13031wird einen untergeordneten Prozess erzeugen und sich selbst beenden. Das Kind läuft weiter im Hintergrund und wird vom Init-Prozess geerbt (PID == 1).
Wenn dies der Fall ist, können Sie enternach dem Starten des rakeBefehls eine andere Taste drücken . Sehen Sie Drucke wie diese?

[1]+ Done rake resque:work QUEUE='*' 

Versuchen Sie, psim Terminal zu laufen . Das sollte die untergeordnete Prozess-PID anzeigen. Wenn Sie killdas tun, sollte der Dämon beendet werden.