การใช้ pgrep / pidof สำหรับชื่อกระบวนการที่ซับซ้อน?


11

ฉันกำลังพยายามใช้ pidof หรือ pgrep เพื่อให้สามารถส่ง HUP ไปยังกระบวนการในระบบของฉัน ปัญหาคือฉันต้องการฆ่ากระบวนการด้วยพารามิเตอร์ที่แม่นยำเท่านั้น

นี่คือผลลัพธ์ของ 'ps awx'

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

โดยทำสิ่งใดสิ่งหนึ่งต่อไปนี้:

pidof processname 
pgrep processname

คุณจะได้รับรายการกระบวนการทั้งหมดที่เริ่มต้นด้วย processname แต่ฉันต้องการทำบางสิ่งเช่น:

pidof processname test
pgrep processname test

เพื่อดึงข้อมูล PID ที่ฉันต้องการเท่านั้น (ในตัวอย่างนี้จะเป็น 659)

UPDATE

โดยใช้แฟล็ก -f บน pgrep ทำสิ่งที่ฉันต้องการโดยทำ:

pgrep -f "processname test"

คุณจะได้คำตอบที่ถูกต้อง


โดยทั่วไปคุณต้องการ-fเพราะคุณต้องการจับคู่ในบรรทัดคำสั่งแบบเต็ม โปรดทราบว่า pgrep ทำงานกับนิพจน์ทั่วไปดังนั้นคุณสามารถทำการจับคู่ที่ค่อนข้างซับซ้อนได้เช่นกัน
cjc

คำตอบ:


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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.