pgrep / pidof Verwendung für komplexe Prozessnamen?

11

Ich versuche, pidof oder pgrep zu verwenden, um ein HUP an einen Prozess in meinem System senden zu können. Das Problem ist, dass ich den Prozess nur mit einem genauen Parameter beenden möchte.

Dies ist die Ausgabe von 'ps awx'

  657 ?        S      0:00 processname software
  658 ?        S      0:00 processname demo
  659 ?        S      0:00 processname test

Indem Sie eine der folgenden Aktionen ausführen:

pidof processname 
pgrep processname

Sie erhalten die Liste aller Prozesse, die mit dem Prozessnamen beginnen, aber ich möchte etwas tun wie:

pidof processname test
pgrep processname test

Um nur die PID abzurufen, die ich benötige (in diesem Beispiel wäre 659)

AKTUALISIEREN

Durch die Verwendung des Flags -f auf pgrep wird genau das getan, was ich wollte:

pgrep -f "processname test"

Sie erhalten die richtige Antwort.

aseques
quelle
Richtig, Sie benötigen im Allgemeinen, -fweil Sie in der vollständigen Befehlszeile übereinstimmen möchten. Beachten Sie, dass pgrep mit regulären Ausdrücken arbeitet, sodass Sie auch relativ komplexe Übereinstimmungen durchführen können.
cjc

Antworten:

10
$ ps aux |grep [d]evio
user01   10220  0.0  0.1   5376  2424 pts/5    S+   11:41   0:00 ssh devio
$ pgrep -f "ssh devio"
10220
$ pkill -0 -f "ssh devio" ; echo $?
0
Jirib
quelle