pgrep / penggunaan pidof untuk nama proses yang kompleks?

11

Saya mencoba menggunakan pidof atau pgrep untuk dapat mengirim HUP ke suatu proses di sistem saya. Masalahnya adalah saya hanya ingin mematikan proses dengan parameter yang tepat.

Ini adalah output dari 'ps awx'

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

Dengan melakukan salah satu dari ini:

pidof processname 
pgrep processname

Anda mendapatkan daftar semua proses dimulai dengan processname, tetapi saya ingin melakukan sesuatu seperti:

pidof processname test
pgrep processname test

Untuk mengambil hanya PID yang saya butuhkan (dalam contoh ini akan menjadi 659)

MEMPERBARUI

Dengan menggunakan flag -f pada pgrep lakukan saja apa yang saya inginkan, dengan melakukan:

pgrep -f "processname test"

Anda akan mendapatkan jawaban yang benar.

aseques
sumber
Benar, Anda biasanya perlu -fkarena Anda ingin mencocokkan pada baris perintah penuh. Perhatikan bahwa pgrep beroperasi pada ekspresi reguler, sehingga Anda dapat melakukan pencocokan yang relatif kompleks juga.
cjc

Jawaban:

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
sumber