Khi họ đang chạy
Có vẻ như bạn chỉ có thể làm điều này với kill
và đầu ra của jobs -p
.
Thí dụ
$ sleep 1000 &
[1] 21952
$ sleep 1000 &
[2] 21956
$ sleep 1000 &
[3] 21960
Bây giờ tôi có 3 công việc giả đang chạy.
$ jobs
[1] Running sleep 1000 &
[2]- Running sleep 1000 &
[3]+ Running sleep 1000 &
Giết tất cả chúng như vậy:
$ kill $(jobs -p)
[1] Terminated sleep 1000
[2]- Terminated sleep 1000
[3]+ Terminated sleep 1000
Khẳng định tất cả đã biến mất.
$ jobs
$
Khi họ dừng lại
Nếu bạn có công việc bị dừng, không chạy, bạn làm điều này thay vào đó.
Thí dụ
$ kill $(jobs -p)
$ jobs
[1]+ Stopped sleep 1000
[2]- Stopped sleep 1000
[3] Stopped sleep 1000
OK để không giết chúng, nhưng đó là vì tín hiệu tiêu diệt không thể được xử lý bởi chính quá trình, nó đã dừng lại. Vì vậy, nói với hệ điều hành để giết chết thay thế. Đó là những gì a -9
dành cho.
$ kill -9 $(jobs -p)
[1]+ Killed sleep 1000
[2]- Killed sleep 1000
[3] Killed sleep 1000
Cái đó tốt hơn.
$ jobs
$
Khi một số đang chạy và một số bị dừng lại
Nếu bạn có một túi hỗn hợp các quy trình trong đó một số quy trình bị dừng và một số đang chạy, bạn có thể thực hiện bước kill
đầu tiên theo sau là a kill -9
.
$ kill $(jobs -p); sleep <time>; \
kill -18 $(jobs -p); sleep <time>; kill -9 $(jobs -p)
Kéo dài thời gian một chút nếu bạn cần nhiều hơn để cho phép các quá trình tự dừng lại trước tiên.
Tín hiệu
Không phải HUP (-1) hoặc SIGTERM (-15) để giết sẽ thành công. Nhưng tại sao? Đó là bởi vì những tín hiệu này tốt hơn theo nghĩa là chúng đang bảo ứng dụng tự chấm dứt. Nhưng vì ứng dụng ở trạng thái dừng nên nó không thể xử lý các tín hiệu này. Vì vậy, khóa học duy nhất của bạn là sử dụng SIGKILL (-9).
Bạn có thể thấy tất cả các tín hiệu kill
cung cấp với kill -l
.
$ kill -l | column -t
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
Nếu bạn muốn tìm hiểu nhiều hơn về các tín hiệu khác nhau, tôi rất khuyến khích người ta hãy xem trang người đàn ông tín hiệu , man 7 signal
.
+
biểu tượng cho quy trình đầu tiên và-
biểu tượng cho quy trình thứ hai và không có biểu tượng trong quy trình thứ ba?