linux 中怎麼幹掉一個進程
你是否曾經遇到過啓動應用程序,而在使用該應用程序時突然變得無響應並意外崩潰的情況?你嘗試再次啓動該應用程序,但沒有任何反應,因爲原始應用程序進程從未真正完全關閉。
普通用戶可以殺死自己的進程,但不能殺死屬於其他用戶的進程,而 root 用戶可以殺死所有進程。
系統 kill 信號
kill
和killall
可以將給定信號發送到指定的進程或進程組。當沒有指定信號時,兩個工具都會發送-15
(-TERM)。
最常用的信號是:
-
1
(-HUP):重新啓動進程。 -
9
(-KILL):殺死一個進程。 -
15
(-TERM):正常停止進程。
可以通過三種不同的方式指定信號:
-
使用帶有
SIG
前綴(例如 - SIGHUP) -
使用數字(例如 - 1)
-
不帶
SIG
前綴(例如 - HUP) 。
使用
-l
選項列出所有可用信號:
kill -l # or killall -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
使用kill
命令終止進程
要使用
kill
命令終止進程,首先需要找到進程 PID。你可以使用不同的命令來執行此操作,例如top
,ps
,pidof
和pgrep
。
假設我們的 Firefox 瀏覽器已無法響應,你需要取消 Firefox 進程。要找到過程 PID,請使用
pidof
命令:
pidof firefox
以上命令將顯示所有 Firefox 進程:
2551 2514 1963 1856 1771
一旦你知道 Firefox 處理 PID 以終止所有 PID,請輸入:
kill -9 2551 2514 1963 1856 1771
使用killall
命令終止進程
killall
命令終止與指定名稱匹配的所有程序。
使用與之前相同的方案,我們可以通過鍵入以下命令來終止 Firefox 進程:
killall -9 firefox
killall
接受幾個選項,例如指定使用用戶身份運行的進程,使用正則表達式以及根據創建時間終止進程。你可以通過鍵入killall
(不帶任何參數)來獲得所有選項的列表。
例如,如果我們要終止以用戶身份運行的所有進程
rumenz
,則可以運行以下命令:
killall -u rumenz
殺死運行時間超過 5h 的進程
killall -o 5h
殺死進行時間小於 4h 的進程
killall -y 4h
默認情況下,killall 命令是大小寫敏感的,所以我們如果寫錯大小寫,將無法正確殺死進程。
killall -I NGINX
等待直到某個進程被終止, 可以使用
-w
選項,其中 w 代表 wait
killall -w
使用pkill
命令終止進程
pkill 使用正則表達式來匹配進程名稱。
ps -eo pid,cmd | grep ssh
1039 sshd
2257 ssh-agent
6850 ssh
31279 ssh-agent
通過正則批量關閉
pkill '^ssh$'
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/HRbKe-kykiRnziVfV0xyuA