ฉันเพิ่งเริ่มใช้ CentOS ฉันไปลองใช้killall
ยูทิลิตี แต่พบว่ามันหายไปพร้อมกับฉันได้รับcommand not found
ข้อความเมื่อพยายามใช้ ฉันจะใช้ฟังก์ชันนี้ในระบบของฉันเพื่อที่จะฆ่ากระบวนการทั้งหมดที่ชื่อตรงกับรูปแบบได้อย่างไร
ฉันเพิ่งเริ่มใช้ CentOS ฉันไปลองใช้killall
ยูทิลิตี แต่พบว่ามันหายไปพร้อมกับฉันได้รับcommand not found
ข้อความเมื่อพยายามใช้ ฉันจะใช้ฟังก์ชันนี้ในระบบของฉันเพื่อที่จะฆ่ากระบวนการทั้งหมดที่ชื่อตรงกับรูปแบบได้อย่างไร
คำตอบ:
pkill
ยูทิลิตี้killall
เป็นทางเลือกที่ดีมาก killall
ไม่สามารถพกพาได้เนื่องจากพฤติกรรมของคำสั่งนั้นแตกต่างกันมากในระบบปฏิบัติการ pkill
เป็นแบบพกพาและทำงานแบบเดียวกันทุกที่ นอกจากนี้ยังมีความยืดหยุ่นมากขึ้นเนื่องจากให้วิธีการจับคู่กระบวนการที่แตกต่างกันมากมาย นอกจากนี้ยังแบ่งปันพฤติกรรมการจับคู่และข้อโต้แย้งเดียวกับpgrep
ยูทิลิตี้ซึ่งช่วยให้คุณเห็นกระบวนการที่จะจับคู่และส่งสัญญาณโดยไม่ต้องส่งสัญญาณจริง
การใช้งาน: pkill foo
(ซึ่งจะเหมือนกับkillall foo
)
pgrep
สนับสนุนการใช้งานทั้งหมดของ-q
ตัวเลือกสำหรับความเงียบแม้ว่า
PSmiscประกอบด้วยkillall
โปรแกรมอรรถประโยชน์พร้อมด้วยเครื่องมือขนาดเล็กและมีประโยชน์อื่น ๆ สามารถเพิ่มได้ง่ายๆด้วย
yum install psmisc
นอกเหนือจากโซลูชันของ 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
ฉันจะจินตนาการว่าทางเลือก systemd คือsystemctl halt
(ย่อมาจากsystemctl isolate halt.target
)
killall
ผมคิดว่าคำตอบนี้จะได้รับดีกว่าถ้ามันได้แสดงให้เห็นว่าวิธีการหนึ่งที่สามารถใช้ในการแทนที่