ฉันเพิ่งเริ่มใช้ 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ผมคิดว่าคำตอบนี้จะได้รับดีกว่าถ้ามันได้แสดงให้เห็นว่าวิธีการหนึ่งที่สามารถใช้ในการแทนที่