วิธีการฆ่ากระบวนการด้วยคำสั่งเดียว?


18

ฉันต้องการฆ่ากระบวนการหลังจากค้นหารหัสในขั้นตอนเดียว

ฉันใช้คำสั่งสองคำสั่งต่อไปนี้:

pidof <name>
kill <#number_which_is_result_of_command>

ฉันจะเขียนคำสั่งเดียวเพื่อทำสิ่งนี้ได้อย่างไร


เปลือกอะไร bash? tcsh? ... ?
Levon

2
คุณสามารถค้นหาการทดแทนคำสั่งในเอกสารประกอบเชลล์ของคุณ
deviantkarot

2
ฉันฆ่าสิ่งต่าง ๆ ด้วยสายตาโดย: xkill เพียงพิมพ์ xkill ในเทอร์มินัลเลื่อนเคอร์เซอร์ไปที่แอพที่ละเมิดและกดปุ่มไปที่

1
@arochester ที่ใช้งานได้ แต่ถูก จำกัด กับสภาพแวดล้อม GUI killความหลากหลายของคำสั่งจะทำงานจากคอนโซล (บวกอาจเป็นแบบอัตโนมัติในสคริปต์ ฯลฯ ) ยังดีที่ทำให้คนตระหนักถึงxkillตัวเลือกได้อย่างแน่นอน
Levon

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

คำตอบ:


18

คุณยังสามารถฆ่ากระบวนการตามชื่อ:

ตัวอย่าง:

pkill vim  # kill all processes containing vim in the process name

@ ระดับคุณแน่ใจหรือไม่ คำแนะนำ: มันจะทำงานถ้าคุณเปลี่ยนpkillเป็นkill?
Mikel

มันจะไม่ทำงาน Levon kill -9 ฆ่ากระบวนการด้วย PID และ pkill -9 ฆ่ากระบวนการด้วยชื่อ
fromnaboo

6
โดยไม่ต้อง-oหรือ-n, pkillยังฆ่าทุกกระบวนการจับคู่ไม่ได้เป็นเพียงหนึ่ง
Mikel

3
-1 สำหรับการแนะนำให้ใช้ SIGKILL (-9) ซึ่งเป็นระบบนิเวศของกระบวนการที่ไม่ดี ด้วย SIGKILL ข้อมูลภายในกระบวนการจะไม่ถูกลบทิ้งสร้างความเสียหายของข้อมูลที่เป็นไปได้
Arcege

6
การแนะนำkillallคือคำแนะนำที่ไม่ดีนัก มันทำสิ่งที่แตกต่างกันมากขึ้นอยู่กับ Unix / Linux ที่คุณใช้
MikeyB

13

หากต้องการตอบคำถามเฉพาะของคุณด้วยชุดคำสั่งให้ใช้:

kill `pidof <name>`

เนื่องจากpidof <name>ให้ PID ของกระบวนการที่คุณพยายามฆ่าคุณสามารถใช้กับสวิตช์บรรทัดคำสั่งเช่น-9ฯลฯ ได้เช่นกัน

ทดสอบด้วยและbashtcsh


9
BTW kill $(pidof <name>)เข้ากันได้มากขึ้น (POSIX) และสามารถใช้ภายในบล็อกการแทนที่คำสั่งอื่นได้
Rudolf Adamkovic

@RudolfAdamkovic ฉันยอมรับว่าเป็นตัวเลือกที่ดีกว่าแน่นอนในสคริปต์ อย่างไรก็ตามสำหรับคำสั่งที่พิมพ์อย่างรวดเร็วฉันพบว่าการใช้ backticks ง่ายขึ้น .. และมันใช้ได้กับทั้ง shells ทั่วไป (bash และ tcsh) .. ฉันไม่สามารถรับ$เวอร์ชันสำหรับ tcsh ได้
Levon

เพิ่งลองกับtcshและคุณพูดถูก ไม่ทราบว่า ขอบคุณสำหรับข้อมูล!
Rudolf Adamkovic

7

ควรเป็นความคิดเห็นเกี่ยวกับ Levon แต่ฉันไม่มีตัวแทนที่นี่:

การอภิปรายในคำตอบที่ได้รับการยอมรับของคำถามนี้: /server/397762/how-to-make-folders-00-99-with-a-single-command-in-ubuntu

ฉันจะบอกว่ามันอาจจะดีกว่า (หรืออย่างน้อยมีประโยชน์ / ชัดเจนสำหรับผู้ค้นหาในภายหลัง) เพื่อให้ทำงานได้

kill $(pidof <name>)

การอ้างอิงเพิ่มเติมเกี่ยวกับ $ () เทียบกับ ``: http://mywiki.wooledge.org/BashFAQ/082


+1 สำหรับการรวมลิงก์ด้านล่างโดยเฉพาะ ฉันได้รับความคิดเห็นที่คล้ายกันจาก @RudolfAdamkovic ดูคำตอบของฉันที่มีต่อเขา คุณรู้รุ่นนี้ใช้งานได้กับ tcsh หรือไม่? (ผมยังคงพบ backticks ง่ายขึ้นในการพิมพ์บนคำสั่งอย่างรวดเร็วในเปลือก :)
เฮล์มส

ฉันทำงานกับ bash (บน Linux) & ksh (บน HP-UX) เท่านั้น ยังไม่ได้ข้ามเส้นทางกับ tcsh ขออภัย
Ghillie Dhu

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