CentOS - คำสั่ง killall (เพื่อฆ่ากระบวนการทั้งหมดที่มีชื่อตรงกับรูปแบบที่กำหนด)


18

ฉันเพิ่งเริ่มใช้ CentOS ฉันไปลองใช้killallยูทิลิตี แต่พบว่ามันหายไปพร้อมกับฉันได้รับcommand not foundข้อความเมื่อพยายามใช้ ฉันจะใช้ฟังก์ชันนี้ในระบบของฉันเพื่อที่จะฆ่ากระบวนการทั้งหมดที่ชื่อตรงกับรูปแบบได้อย่างไร

คำตอบ:


24

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

การใช้งาน: pkill foo(ซึ่งจะเหมือนกับkillall foo)


2
killallผมคิดว่าคำตอบนี้จะได้รับดีกว่าถ้ามันได้แสดงให้เห็นว่าวิธีการหนึ่งที่สามารถใช้ในการแทนที่
exebook

ไม่pgrepสนับสนุนการใช้งานทั้งหมดของ-qตัวเลือกสำหรับความเงียบแม้ว่า
Kusalananda

ก็จะดีกว่าถ้ามันอธิบายว่ามันเป็นส่วนหนึ่งของแพคเกจ
Xalorous

21

PSmiscประกอบด้วยkillallโปรแกรมอรรถประโยชน์พร้อมด้วยเครื่องมือขนาดเล็กและมีประโยชน์อื่น ๆ สามารถเพิ่มได้ง่ายๆด้วย

yum install psmisc

2

นอกเหนือจากโซลูชันของ Patrick การทำงานของคำสั่ง killall สามารถทำซ้ำได้ด้วยสิ่งต่อไปนี้:

pkill -15 [process name]

ตัวอย่างเช่นเพื่อฆ่ากระบวนการ memcached ที่รันอยู่ทั้งหมดหนึ่งจะเขียนต่อไปนี้:

pkill -15 memcached

'-15' คือการแสดงตัวเลขของสัญญาณ SIGTERM POSIX ในการรับรายการสัญญาณ POSIX ทั้งหมดซึ่งสามารถประมวลผลได้ในกระบวนการให้ใช้คำสั่งต่อไปนี้:

kill -l

นี่จะส่งคืนตารางต่อไปนี้:

1) SIGHUP       2) SIGINT       3) SIGQUIT      4) SIGILL       5) SIGTRAP
6) SIGABRT      7) SIGBUS       8) SIGFPE       9) SIGKILL      10) SIGUSR1
11) SIGSEGV     12) SIGUSR2     13) SIGPIPE     14) SIGALRM     15) SIGTERM
16) SIGSTKFLT   17) SIGCHLD     18) SIGCONT     19) SIGSTOP     20) SIGTSTP
21) SIGTTIN     22) SIGTTOU     23) SIGURG      24) SIGXCPU     25) SIGXFSZ
26) SIGVTALRM   27) SIGPROF     28) SIGWINCH    29) SIGIO       30) SIGPWR
31) SIGSYS      34) SIGRTMIN    35) SIGRTMIN+1  36) SIGRTMIN+2  37) SIGRTMIN+3
38) SIGRTMIN+4  39) SIGRTMIN+5  40) SIGRTMIN+6  41) SIGRTMIN+7  42) SIGRTMIN+8
43) SIGRTMIN+9  44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9  56) SIGRTMAX-8  57) SIGRTMAX-7
58) SIGRTMAX-6  59) SIGRTMAX-5  60) SIGRTMAX-4  61) SIGRTMAX-3  62) SIGRTMAX-2
63) SIGRTMAX-1  64) SIGRTMAX

ข้อมูลเพิ่มเติมเกี่ยวกับสิ่งที่แต่ละสัญญาณไม่สามารถพบได้ที่นี่


โปรดทราบว่าการkillallส่งสัญญาณโดยค่าเริ่มต้นไม่ได้TERM KILL
Kusalananda

ดูเพิ่มเติมที่unix.stackexchange.com/questions/281439/…
Kusalananda

1
จุดดี. แก้ไข
Daniel Kay

ทำไมคุณถึงแก้ไขเพียงเพื่อลบ 'หวังว่านี่จะช่วยได้!' จากท้ายที่สุด @Rui F Ribeiro? มีกฎของชุมชนต่อต้านการพยายามสุภาพหรือไม่?
Daniel Kay

0

ฉันจะจินตนาการว่าทางเลือก systemd คือsystemctl halt(ย่อมาจากsystemctl isolate halt.target)

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