2014-09-29 16 views
30

Ich versuche, einen Prozess durch pid-Datei zu töten:Kill-Prozess durch pid-Datei

kill -9 $(cat /var/run/myProcess.pid) 

Die pid-Datei enthält die Prozessnummer. Die Ausführung des Tötungsvorgangs gibt mir jedoch kein Standout und die Prozesse sind noch am Leben. Aber das funktioniert:

kill -9 PID 

Was ist falsch mit dem ersten Befehl kill? Kann die PID nicht aus der Datei extrahiert werden?

Beispiel Inhalt der pid-Datei:

5424 

und

kill -9 5424 

funktioniert.

+2

Ich rate, aber versuchen Sie 'cat /var/run/myProcess.pid | xargs kill -9'; Meine Annahme ist, dass Sie in der PID-Datei nachgestellten Leerzeichen haben. –

+0

@EliottFrisch Nope funktioniert nicht –

+0

Veröffentlichen Sie den Inhalt der PID-Datei. –

Antwort

48

Ich glaube, dass Sie dies erfahren, weil Ihre Standard-Shell dash (die debian-almquist-Shell) ist, aber Sie Bash-Syntax verwenden. Sie können bash in der Shebang-Zeile mit so etwas wie,

#!/usr/bin/env bash 

angeben Oder Sie den Bindestrich und bash kompatibel zurück-tick-Expression durch admdrew in den Kommentaren

kill -9 `cat /var/run/myProcess.pid` 

Unabhängig vorgeschlagen verwenden konnten, können Sie Verlasse dich nicht auf /bin/sh, um bash zu sein.

29

In einigen Situationen die kompaktere:

pkill -F /var/run/myProcess.pid 

ist der Weg zu gehen. Ich habe Probleme mit den Sorten hat:

kill $(cat /var/run/myProcess.pid) 
# Or 
kill `cat /var/run/myProcess.pid` 

, als ich sonst hatte den Befehl zu etwas bringen, die sie mit unterschiedlichen Regeln analysieren könnten, wie Monit ist für seine Start-/Stop-Befehle.

Verwandte Themen