Android

ฆ่าคำสั่งใน linux

What the Waters Left Behind Trailer 2 (2018) Los Olvidados

What the Waters Left Behind Trailer 2 (2018) Los Olvidados

สารบัญ:

Anonim

Linux เป็นระบบปฏิบัติการที่ยอดเยี่ยม แต่ก็ไม่สมบูรณ์แบบ บางครั้งแอพพลิเคชั่นบางตัวอาจเริ่มทำงานผิดปกติและไม่ตอบสนองหรือเริ่มใช้ทรัพยากรระบบจำนวนมาก ไม่สามารถรีสตาร์ทแอปพลิเคชันที่ไม่ตอบสนองได้เนื่องจากกระบวนการแอปพลิเคชันดั้งเดิมไม่เคยปิดตัวลงอย่างสมบูรณ์ ทางออกเดียวคือรีสตาร์ทระบบหรือฆ่ากระบวนการแอปพลิเคชัน

มีโปรแกรมอรรถประโยชน์หลายอย่างที่ช่วยให้คุณสามารถยุติกระบวนการที่ผิดพลาดด้วยการ kill สิ่งที่ใช้กันมากที่สุด

kill คำสั่ง

kill เป็นกระสุนที่อยู่ภายในเปลือกหอยส่วนใหญ่ที่ได้มาจาก Bourne เช่น Bash และ Zsh พฤติกรรมคำสั่งนั้นแตกต่างกันเล็กน้อยระหว่างเชลล์และไฟล์สั่งการแบบสแตนด์อโลน /bin/kill

ใช้คำสั่ง type เพื่อแสดงตำแหน่งทั้งหมดในระบบของคุณที่มี kill :

type -a kill

kill is a shell builtin kill is /bin/kill

เอาต์พุตด้านบนบอกว่า shell builtin มีลำดับความสำคัญสูงกว่าไฟล์สั่งการแบบสแตนด์อโลนและจะถูกใช้ทุกครั้งที่คุณพิมพ์ kill หากคุณต้องการใช้ไบนารีให้พิมพ์เส้นทางแบบเต็มไปยังไฟล์ /bin/kill เราจะใช้ Bash ในตัว

ไวยากรณ์ของคำสั่ง kill ใช้รูปแบบต่อไปนี้:

kill…

คำสั่ง kill ส่งสัญญาณไปยังกระบวนการที่ระบุหรือกลุ่มกระบวนการทำให้พวกเขาทำตามสัญญาณ เมื่อไม่ได้ระบุสัญญาณจะมีค่าเริ่มต้นเป็น -15 (-TERM)

สัญญาณที่ใช้บ่อยที่สุดคือ:

  • 1 ( HUP ) - โหลดกระบวนการอีกครั้ง 9 ( KILL ) - ฆ่ากระบวนการ 15 ( TERM ) - หยุดกระบวนการอย่างงดงาม

ในการรับรายการสัญญาณทั้งหมดที่มีให้เรียกใช้คำสั่งด้วยตัวเลือก -l :

kill -l

สัญญาณสามารถระบุได้สามวิธี:

  1. ใช้หมายเลข (เช่น -1 หรือ -s 1 ) การใช้คำนำหน้า“ SIG” (เช่น -SIGHUP หรือ -s SIGHUP ) โดยไม่ใช้คำนำหน้า“ SIG” (เช่น -SIGHUP หรือ -s HUP )

คำสั่งต่อไปนี้เทียบเท่ากันได้:

kill -1 PID_NUMBER kill -SIGHUP PID_NUMBER kill -HUP PID_NUMBER

PID ที่จัดเตรียมให้กับคำสั่ง kill สามารถเป็นหนึ่งในสิ่งต่อไปนี้:

  • หาก PID มากกว่าศูนย์สัญญาณจะถูกส่งไปยังกระบวนการที่มี ID เท่ากับ PID ถ้า PID เท่ากับศูนย์สัญญาณจะถูกส่งไปยังกระบวนการทั้งหมดในกลุ่มกระบวนการปัจจุบัน กล่าวอีกนัยหนึ่งสัญญาณจะถูกส่งไปยังกระบวนการทั้งหมดที่เป็นของ GID ของเชลล์ที่เรียกใช้คำสั่ง kill ใช้คำสั่ง ps -efj เพื่อดู ID กลุ่มกระบวนการ (GID) หาก PID เท่ากับ -1 สัญญาณจะถูกส่งไปยังกระบวนการทั้งหมดที่มี UID เดียวกันกับที่ผู้ใช้เรียกใช้คำสั่ง หากผู้ใช้ที่เรียกใช้เป็นรูทสัญญาณจะถูกส่งไปยังกระบวนการทั้งหมดยกเว้น init และกระบวนการ kill เองหาก PID น้อยกว่า -1 สัญญาณจะถูกส่งไปยังกระบวนการทั้งหมดในกลุ่มกระบวนการ eq ที่มี GID เท่ากับค่าสัมบูรณ์ของ PID

ผู้ใช้ปกติสามารถส่งสัญญาณไปยังกระบวนการของตนเอง แต่ไม่ใช่สัญญาณที่เป็นของผู้ใช้รายอื่นในขณะที่ผู้ใช้รูทสามารถส่งสัญญาณไปยังกระบวนการของผู้ใช้อื่น

การยุติกระบวนการโดยใช้คำสั่ง kill

หากต้องการยกเลิกหรือฆ่ากระบวนการด้วยคำสั่ง kill อันดับแรกคุณต้องค้นหาหมายเลข ID กระบวนการ (PID) คุณสามารถทำได้โดยใช้คำสั่งต่าง ๆ เช่น top , ps , pidof และ pgrep

สมมติว่าเบราว์เซอร์ Firefox ไม่ตอบสนองและคุณต้องฆ่ากระบวนการ Firefox ในการค้นหา PID ของเบราว์เซอร์ให้ใช้คำสั่ง pidof :

pidof firefox

คำสั่งจะพิมพ์ ID ของกระบวนการ Firefox ทั้งหมด:

6263 6199 6142 6076

เมื่อคุณทราบหมายเลขกระบวนการคุณสามารถยุติกระบวนการทั้งหมดได้โดยส่งสัญญาณ TERM :

kill -9 2551 2514 1963 1856 1771

แทนที่จะค้นหา PID จากนั้นยกเลิกกระบวนการคุณสามารถรวมคำสั่งข้างต้นเป็นหนึ่งเดียว:

kill -9 $(pidof firefox)

โหลดกระบวนการใหม่โดยใช้คำสั่ง kill

อีกกรณีที่ใช้กันทั่วไปสำหรับ kill คือการส่งสัญญาณ HUP ซึ่งบอกกระบวนการที่จะโหลดการตั้งค่า

ตัวอย่างเช่นในการโหลด Nginx คุณต้องส่งสัญญาณไปยังกระบวนการหลัก ID กระบวนการของกระบวนการต้นแบบ Nginx สามารถพบได้ในไฟล์ nginx.pid ซึ่งโดยทั่วไปจะอยู่ในไดเรกทอรี /var/run

ใช้คำสั่ง cat เพื่อค้นหา PID หลัก:

cat /var/run/nginx.pid

30251

เมื่อคุณพบ PID หลักแล้วโหลดการตั้งค่า Nginx อีกครั้งโดยพิมพ์:

sudo kill -1 30251

คำสั่งดังกล่าวจะต้องเรียกใช้ในฐานะผู้ใช้รากหรือผู้ใช้ที่มีสิทธิ์ sudo

ข้อสรุป

คำสั่ง kill ใช้เพื่อส่งสัญญาณไปยังกระบวนการ สัญญาณที่ใช้บ่อยที่สุดคือ SIGKILL หรือ -9 ซึ่งยุติกระบวนการที่กำหนด

ฆ่าสถานี