複製鏈接
請複製以下鏈接發送給好友

kill

(Linux命令提示符)

鎖定
kill送出一個特定的信號 (signal)給行程id為pid的行程根據該信號而做特定的動作,若沒有指定,預設是送出終止 (TERM)的信號。
外文名
kill
使用權限
所有使用者
實    質
linux命令提示符

kill使用方式

kill [-s sigspec | -n signum | -sigspec] pid | jobspec … or kill -l [sigspec]
-s (signal): 其中常用的訊號有 HUP (1),KILL (9),TERM (15),分別代表着重跑,砍掉,結束; 詳細的信號可以用 kill -l (見下結果,可用數字帶入)
-p : 印出pid,並不送出信號
-l (signal): 列出所有可用的信號名稱
這個就是kill -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一般範例

將pid為323的線程砍掉 (kill):
kill -9 323
將pid為456的線程重跑 (restart):
kill -HUP 456
一般來講,查詢PID的命令是
ps -ef | grep yum
(表示查詢的是yum的PID,根據查詢的東西不同而異)。
舉一個實際的例子:
比方説,Fedora的在線更新命令yum鎖鎖住了,常見的提示是
Existing lock /var/run/yum.pid: another copy is running as pid 19698.
Another app is currently holding the yum lock; waiting for it to exit…
Another app is currently holding the yum lock; waiting for it to exit…
Another app is currently holding the yum lock; waiting for it to exit…
Another app is currently holding the yum lock; waiting for it to exit…
Another app is currently holding the yum lock; waiting for it to exit…
…….
這裏就沒必要使用ps命令了,因為已經知道PID就是19698這個值了,因此不用在查詢。
這時就要使用kill將19698的進程殺死。其中的19698就是PID。
所以在命令行內輸入:
kill -9 19698
就能成功的殺死這個進程。
kill的改進用法如下:
一、把ps的查詢結果通過管道給grep查找包含特定字符串的進程。管道符“|”用來隔開兩個命令,管道符左邊命令的輸出會作為管道符右邊命令的輸入。
$ ps -ef | grep firefox
smx 1827 1 4 11:38 ? 00:27:33 /usr/lib/firefox-3.6.18/firefox-bin
smx 12029 1824 0 21:54 pts/0 00:00:00 grep –color=auto firefox
這次就清爽了。然後就是
$kill -s 9 1827
還是嫌打字多?
二、使用pgrep
一看到pgrep首先會想到什麼?沒錯,grep!pgrep的p表明了這個命令是專門用於進程查詢的grep。
$ pgrep firefox
1827
看到了什麼?沒錯火狐的PID,接下來又要打字了:
$kill -s 9 1827