Linux 精通Linux的“kill”命令
- 概述
- Kill命令和信號
- PKill
- Killall
- xkill
概述
無論你使用哪種操作系統(tǒng),你一定會遇到某個行為失常的應(yīng)用,它把自己鎖死并拒絕關(guān)閉。在Linux(還有Mac),你可以用一個”kill”命令強制終結(jié)它。本篇博文中,我們將展示給你多種方式使用”kill”命令終結(jié)應(yīng)用。
Kill命令和信號
[xgj@entel2 ~]$ kill kill: usage: kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]可以清晰的看到 -n 指的是 信號編號[xgj@entel2 ~]$ kill -l ---> 查看Linux/Unix的信號變量1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP6) 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當(dāng)你執(zhí)行一個”kill”命令,你實際上發(fā)送了一個信號給系統(tǒng),讓它去終結(jié)不正常的應(yīng)用。總共有64個你可以使用的信號,但是基本上你只需要知道SIGTERM(15)和SIGKILL(9)。
區(qū)別:
SIGTERM(15) - 此信號請求一個進(jìn)程停止運行。此信號是可以被忽略的。進(jìn)程可以用一段時間來正常關(guān)閉,一個程序的正常關(guān)閉一般需要一段時間來保存進(jìn)度并釋放資源。換句話說,它不是強制停止。
SIGKILL(9) - 此信號強制進(jìn)程立刻停止運行。程序不能忽略此信號,而未保存的進(jìn)度將會丟失
使用”kill”的語法是:
kill [信號或選項] PID(s)默認(rèn)信號(當(dāng)沒有指定的時候)是SIGTERM。當(dāng)它不起作用時,你可以使用下面的命令來強制kill掉一個進(jìn)程:
kill SIGKILL PID或者
kill -9 PID這里”-9”代表著SIGKILL信號。
如果你不知道應(yīng)用的PID,僅需要運行這個命令:
ps ux它會顯示所有正在運行的應(yīng)用還有應(yīng)用的PID。
例如,要kill掉**Agent,我會運行命令:
kill -9 31921也可以在同一時間kill多個進(jìn)程。
kill -9 PID1 PID2 PID3PKill
”pkill”命令允許使用擴(kuò)展的正則表達(dá)式和其它匹配方式。
你現(xiàn)在可以使用應(yīng)用的進(jìn)程名kill掉它們,而不是使用PID。例如,要kill掉xgjAgent,只需要運行命令:
pkill xgjAgent使用正則表達(dá)式匹配的話,你可以輸入進(jìn)程名的部分字符,比如:
pkill xgj為了避免kill掉錯誤的進(jìn)程,你應(yīng)該用一下”pgrep -l [進(jìn)程名]“列表來匹配進(jìn)程名稱。
Killall
killall同樣使用進(jìn)程名替代PID,并且它會kill掉所有的同名進(jìn)程。例如,如果你正在運行多個xgjAgent的實例,可以用命令把它們?nèi)縦ill掉:
killall xgjAgentxkill
xkill 是圖形方式kill一個應(yīng)用。當(dāng)你在終端鍵入”xkill”,你的光標(biāo)將立刻變成一個”十字”。你只需要做的是在不正常的應(yīng)用上點擊一下,它就會立刻kill掉這個應(yīng)用。
總結(jié)
以上是生活随笔為你收集整理的Linux 精通Linux的“kill”命令的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux 让进程在后台可靠运行的几种方
- 下一篇: Linux 在 linux 中搭建 FT