Mein Skript akzeptiert einen Prozessnamen als Eingabe und beendet ihn. Ich habe versucht, pgrep zu verwenden, aber es werden zwei PIDs zurückgegeben, eine für den laufenden Prozess und eine für das Skript, das den Prozessnamen als Eingabe akzeptiert. Ich habe auch versucht, die pgrep
-fo
Option zu verwenden, aber das hat auch nicht geholfen. Anregungen wären hilfreich. Das ist mein Skript
#!/bin/bash
ProcessName=$1
pID= pgrep -fl $ProcessName
echo $pID
Wenn ich das Skript aufrufe, werden zwei PIDs zurückgegeben:
bash-3.00$ ./dynamic_values.sh test-Process
10534 /xxx/xxo/xxx/xxe --run --propFile /application/test/test-Process_Archive.tra --innerProcess
23401 /bin/bash ./dynamic_values.sh test-Process
Ich hatte nur 10534 erwartet, aber es hat auch das Drehbuch aufgenommen. Version des Betriebssystems nur für den Fall:
bash-3.00$ uname -a
Linux xxxxxx 2.6.9-67.0.1.
pkill
bei der Verwendung -f
(was er tut) wird das gleiche Problem haben.
-x
in Kombination mit verwenden -f
, um sicherzustellen, dass Sie das Ganze zusammenbringen? Ich bin überrascht, pkill
dass ich keine eingebaute Möglichkeit habe, damit umzugehen.
pkill
getötet, bevor ich die Prozesse beendet hatte, die ich beenden wollte, daher hatte ich immer angenommen, dass die Implementierung gut war.
pkill
. Es verwendet dieselbe Prozessfindungslogikpgrep
, mit der Sie bereits wissen, wie Sie Ihren Prozess finden können. Anstatt die PIDs an Sie zurückzugeben, wird lediglich ein Kill-Signal für Sie gesendet. In der Zwischenzeit kümmert es sich auch um Details wie nicht sich selbst zu töten.