เชลล์สคริปต์เป็น -9 kill ตามชื่อ


28

มีวิธี (อาจเป็นสคริปต์) วิธีทำให้กระบวนการนี้เป็นไปโดยอัตโนมัติไหม

petr@sova:~$ ps -ef | grep middleman
petr     18445  2312  1 12:06 pts/2    00:00:01 /home/petr/.rvm/gems/ruby-1.9.3-p362/bin/middleman                                                                  
petr     18581 13621  0 12:08 pts/0    00:00:00 grep --color=auto middleman
petr@sova:~$ kill -9 18445

น่าเสียดายที่pkillอ่อนแอเกินไปเพราะฉันต้อง-9เลือกออปkillชั่น


2
คุณสามารถใช้-9กับpkill...
หยุดทำร้ายโมนิก้า

6
ในความคิดของฉันก็หรูหรามากขึ้นและเหมาะสมที่จะใช้กว่า-KILL -9หมายเลขใดที่สอดคล้องกับสัญญาณที่ขึ้นอยู่กับการนำไปใช้งาน SIGKILLเกิดขึ้น9กับ Linux i386 และ Linux amd64 แต่ไม่จำเป็นว่าจะต้องมีทุกที่ ( ข้อมูลเพิ่มเติมได้ที่นี่ )
Eliah Kagan

5
@EliahKagan: ในขณะที่ฉันชอบที่จะใช้-KILLมากเกินไป (เพราะมันทำให้โค้ดอ่านได้มากขึ้น) ก็ควรจะตั้งข้อสังเกตว่าSIGKILL = 9มีการระบุโดย POSIXจึง-9เป็นแบบพกพาสวยในปัจจุบัน (และไม่ขึ้นอยู่กับเมล็ดหรือสถาปัตยกรรม)
Andrea Corbellini

คำตอบ:


36

คุณสามารถใช้เชลล์เพื่อทำงานนี้ให้คุณ:

kill -9 $(pidof middleman)

เชลล์เรียกใช้งานคำสั่งpidof middlemanก่อน เอาต์พุตของpidof (8)คือ id กระบวนการ ดังนั้นเชลล์จะแทนที่pidofคำสั่ง - พร้อมด้วยรหัสกระบวนการและดำเนินการkill -9 18845(หรือรหัสกระบวนการที่ถูกต้องคืออะไร)


อะไรคือความแตกต่างระหว่างนี้กับkill -9 $(pgrep middleman)?
Aaron Franke

54

มีวิธีแก้ปัญหาที่ง่ายกว่า qbi: killallให้คุณฆ่ากระบวนการด้วยชื่อและคุณสามารถระบุสัญญาณ

killall -9 middleman

ดูman killallข้อมูลเพิ่มเติมและตัวเลือกเพิ่มเติม (มีค่อนข้างน้อย)

เป็นชื่อที่แนะนำนี้ไม่ส่งสัญญาณไปยังทุกmiddlemanกระบวนการการตั้งชื่อ แต่นั่นไม่แตกต่างจากวิธีอื่น ๆ (เช่นpkill) นอกจากนี้pkill -9 middlemanจะกำหนดเป้าหมายกระบวนการที่มีชื่อตรงกัน แต่ไม่เท่ากันmiddlemanเช่นmiddleman2กัน


2
killallสำหรับผู้ชนะ!
Andrea Corbellini

4
ฆ่าพ่อค้าคนกลางทั้งหมดหรือไม่ โอ้ที่รัก ...
โทเบียส Kienzler

16

คำตอบอื่น ๆ นั้นถูกต้องทั้งหมด แต่ฉันก็อาจเพิ่มตัวเลือกที่สามเพื่อให้เอกสารทั้งหมดที่นี่ คุณยังสามารถใช้:

pkill -9 middleman

ดูman pkillข้อมูลเพิ่มเติมและตัวเลือกเพิ่มเติม

ไม่สำคัญว่าคุณใช้วิธีการใด พวกเขาทั้งหมดจะทำงาน แต่การรู้จักตัวเลือกถ้ามีประโยชน์หากคุณต้องการปรับเปลี่ยนพฤติกรรมในทางใดทางหนึ่งเนื่องจากหน้าคู่มือที่สอดคล้องกันจะแสดงตัวเลือกการจับคู่อื่น ๆ ที่พร้อมใช้งาน


แปลกไม่ทำงานที่นี่ และไม่middleman*
mreq

1
อา มองอย่างใกล้ชิดดูเหมือนว่าคุณต้องการฆ่าล่ามทับทิมแทนที่จะเป็นกระบวนการที่เรียกว่าจริงmiddlemanๆ ซึ่งเป็นที่ที่แตกต่างในวิธีการที่ตรงpkill, killall, pidofและgrepตรงกับกระบวนการจริงๆเริ่มที่จะมีความสำคัญ!
Robie Basak

12
pkill -9 -f middleman

-fตัวเลือกที่จะทำให้มันตรงกับบรรทัดคำสั่งที่สมบูรณ์มากกว่าเพียงชื่อกระบวนการ

โปรดทราบว่า-9ควรเป็นสัญญาณสุดท้ายไม่ใช่สิ่งที่ต้องใช้เป็นประจำ


1
ขอบคุณ! ฉันชอบความสามารถในการจับคู่complete command line
cwd

บรรทัดคำสั่งที่สมบูรณ์นั้นยอดเยี่ยมจริงๆ!
okwap

10

เพื่อความสนุกฉันต้องการเพิ่มคู่มือเพิ่มเติมแบบโรงเรียนเก่า

kill -9 `ps aux | grep middleman | awk '{print $2}'`

1
ฉันทำอย่างนั้นเมื่อไม่กี่ปีที่ผ่านมาและผู้ดูแลระบบให้ฉันดูว่า "โอเคคุณปู่" ยังสามารถเพิ่ม grep -v grep ก่อน awk เพื่อให้แน่ใจว่าจะไม่ฆ่าคำสั่ง grep ด้วย
ผู้ถือเลน

@gerhard ขอบคุณสำหรับการแก้ไขไม่พบเห็บด้านหลังบน iPad ของฉัน grep -v เป็นความคิดที่ดี ...
slipset

ทางโรงเรียนเก่าที่แท้จริงคือการเขียน... grep [m]iddleman ...เพื่อหลีกเลี่ยงการฆ่าgrepกระบวนการโดยไม่ตั้งใจ ด้วยวิธีนี้ grep ไม่สามารถจับคู่ตัวเองได้เนื่องจากการพูดตลก
Mikko Rantalainen

1
killall -9 -ir regex_pattern

ซึ่งเป็นแบบโต้ตอบ (ปลอดภัย) และตรงกับชื่อคำสั่งบางส่วน

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