Như trong các câu trả lời ở trên, cách mạnh nhất để chấm dứt bất kỳ quá trình nào SIGKILL
, vd kill -9 process_id
.
Tuy nhiên, tồn tại quá trình những gì chỉ đơn giản là không thể Force Quit
và cũng không kill
. Họ gọi là zombie
quá trình.
Đây là một đoạn script ngắn sẽ tạo ra một zombie
quy trình trong hai phút:
perl -e 'if($p=fork) {print "unkillable pid:$p\n" ;system("ps -l"); sleep(120)}'
Chạy đoạn script trên trong Terminal và bạn sẽ nhận được đầu ra, như tiếp theo:
unkillable pid:50571
UID PID PPID F CPU PRI NI SZ RSS WCHAN S ADDR TTY TIME CMD
501 47380 47379 4006 0 31 0 2448416 2900 - S 0 ttys000 0:00.36 -bash
501 50570 47380 4006 0 31 0 2443512 1424 - S+ 0 ttys000 0:00.01 perl -e if($p=fork) {print "u
#THIS-> 501 50571 50570 2006 0 0 0 0 0 - Z+ 0 ttys000 0:00.00 (perl)
501 12795 12794 4006 0 31 0 2448296 1752 - S+ 0 ttys001 0:00.75 -bash
501 50123 50122 4006 0 31 0 2448296 2688 - S+ 0 ttys002 0:00.14 -bash
Nếu bạn kiểm tra cột trạng thái cho quy trình không thành công (trong trường hợp này: 50571), bạn sẽ thấy Z
cờ, có nghĩa là gì zombie
.
Bạn có thể thử gửi bất kỳ kill
tín hiệu nào (ví dụ kill -9 50571
) và quá trình vẫn sẽ tồn tại. Dù sao, nó không làm tổn thương nhiều đến hệ thống của bạn, vì thực tế nó không tồn tại - chỉ chiếm bảng quy trình.
Trong ví dụ trên, trong 120 giây, nó sẽ bị xóa.