รับ pids จาก ps -ef | grep keyword


111

ฉันต้องการใช้ps -ef | grep "keyword"เพื่อกำหนด pid ของกระบวนการ daemon (มีสตริงเฉพาะในเอาต์พุต ps -ef อยู่ในนั้น)

ฉันสามารถฆ่ากระบวนการโดยpkill keywordมีคำสั่งใดที่ส่งคืน pid แทนการฆ่ามันหรือไม่? (pidof หรือ pgrep ไม่ทำงาน)

คำตอบ:


231

คุณสามารถใช้pgrepตราบเท่าที่คุณรวมถึง-fตัวเลือก ทำให้pgrepคำหลักที่ตรงกันในคำสั่งทั้งหมด (รวมถึงอาร์กิวเมนต์) แทนที่จะเป็นเพียงชื่อกระบวนการ

pgrep -f keyword

จากหน้าคน :

-f       โดยปกติรูปแบบจะจับคู่กับชื่อกระบวนการเท่านั้น เมื่อ-fถูกตั้งค่าจะใช้บรรทัดคำสั่งแบบเต็ม


หากคุณต้องการหลีกเลี่ยง pgrep จริงๆให้ลอง:

ps -ef | awk '/[k]eyword/{print $2}'

สังเกต[]ตัวอักษรตัวแรกของคีย์เวิร์ด นั่นเป็นเคล็ดลับที่มีประโยชน์ในการหลีกเลี่ยงการจับคู่awkคำสั่ง


3
ps ถูกใช้มากเกินไปและ pgrep ใช้น้อยเกินไป ขอบคุณสำหรับโพสต์
Felipe Alvarez

6
วิธีหนึ่งที่จะส่งผลไปฆ่าคือ kill -9 `pgrep -f keyword`
คริส

คำตอบนี้ดีที่สุดเท่าที่เคยมีมา ดังนั้นเวลามากฉันได้สูญเสียไปด้วยps aux | grep chrome
แบรนดอน

ต้องใช้เคล็ดลับเกี่ยวกับ[k] pgrep -fสคริปต์ของฉันกำลังทำงานใน subshell ดังนั้นฉันคิดว่ามันกำลังหยิบคำสั่งหลักขึ้นมา (ยากที่จะทราบแน่นอน - pid ที่ส่งคืนนั้นหายไปเมื่อคำสั่งเสร็จสิ้นแล้ว!)
ArtOfWarfare

2
@Kris สำหรับกรณีการใช้งานนี้จะไม่ตรงไปตรงมามากกว่าที่จะใช้pkill -9 -f keyword?
oidualc

53

ลอง

ps -ef | grep "KEYWORD" | awk '{print $2}'

คำสั่งนั้นควรให้ PID ของกระบวนการที่มี KEYWORD อยู่ในนั้น ในกรณีนี้awkกำลังส่งคืนสิ่งที่อยู่ในคอลัมน์ที่ 2 จากเอาต์พุต


2
เพราะสามารถกลับมามากกว่าหนึ่ง pid | head -1คุณจะได้รับเป็นครั้งแรกโดยท้าย
Kris

'head -1' จะส่งคืน grep PID ใน linux บางตัวควรเป็น tail -1
Joao Vitorino

22

ps -ef | grep KEYWORD | grep -v grep | awk '{print $2}'


4
อาจจะพิมพ์ผิด? ps -ef | grep KEYWORD | grep -v grep | awk '{print $ 2}'
rmv

คุณรู้วิธีส่งคืน PID เป็น "kill -9" หรือไม่!
alybadawy

3
@alybadawy แค่เพิ่ม| xargs kill -9ตอนท้าย
patte



4

หากต้องการฆ่ากระบวนการโดยใช้คีย์เวิร์ดเฉพาะคุณสามารถสร้างนามแฝงใน~/.bashrc(linux) หรือ~/.bash_profile(mac)

alias killps="kill -9 `ps -ef | grep '[k]eyword' | awk '{print $2}'`"

สมบูรณ์แบบ! การเพิ่มท่อที่ส่วนท้ายของการ| head -1ห่อทั้งหมดนี้ดูดีและเรียบร้อย
Russ
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.