kill
發送信號到進程。
目錄
內建命令
概要
1kill [-s sigspec | -n signum | -sigspec] pid | jobspec ...
2kill -l [sigspec]
主要用途
- 發送信號到作業或進程(可以爲多個)。
- 列出信號。
選項
1-s sig 信號名稱。
2-n sig 信號名稱對應的數字。
3-l 列出信號名稱。如果在該選項後提供了數字那麼假設它是信號名稱對應的數字。
4-L 等價於-l選項。
參數
pid:進程ID
jobspec:作業標識符
返回值
返回狀態爲成功除非給出了非法選項、執行出現錯誤。
例子
1[user2@pc] kill -l 9
2KILL
3
4# 列出所有信號名稱:
5[user2@pc] kill -l
6 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL
7 5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE
8 9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2
913) SIGPIPE 14) SIGALRM 15) SIGTERM 16) SIGSTKFLT
1017) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
1121) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU
1225) SIGXFSZ 26) SIGVTALRM 27) SIGPROF 28) SIGWINCH
1329) SIGIO 30) SIGPWR 31) SIGSYS 34) SIGRTMIN
1435) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3 38) SIGRTMIN+4
1539) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
1643) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12
1747) SIGRTMIN+13 48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14
1851) SIGRTMAX-13 52) SIGRTMAX-12 53) SIGRTMAX-11 54) SIGRTMAX-10
1955) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7 58) SIGRTMAX-6
2059) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
2163) SIGRTMAX-1 64) SIGRTMAX
22
23# 下面是常用的信號。
24# 只有第9種信號(SIGKILL)纔可以無條件終止進程,其他信號進程都有權利忽略。
25
26HUP 1 終端掛斷
27INT 2 中斷(同 Ctrl + C)
28QUIT 3 退出(同 Ctrl + \)
29KILL 9 強制終止
30TERM 15 終止
31CONT 18 繼續(與STOP相反,fg/bg命令)
32STOP 19 暫停(同 Ctrl + Z)
1# 以下發送KILL信號的形式等價。當然還有更多的等價形式,在此不一一列舉了。
2[user2@pc] kill -s SIGKILL PID
3[user2@pc] kill -s KILL PID
4[user2@pc] kill -n 9 PID
5[user2@pc] kill -9 PID
6
7[user2@pc] sleep 90 &
8[1] 178420
9
10# 終止作業標識符爲1的作業。
11[user2@pc] kill -9 %1
12
13[user2@pc] jobs -l
14[1]+ 178420 KILLED ssh 192.168.1.4
15
16[user2@pc] sleep 90 &
17[1] 181357
18
19# 發送停止信號。
20[user2@pc] kill -s STOP 181357
21
22[user2@pc] jobs -l
23[1]+ 181537 Stopped (signal) sleep 90
24
25# 發送繼續信號。
26[user2@pc] kill -s CONT 181357
27
28[user2@pc] jobs -l
29[1]+ 181537 Running sleep 90 &
注意
bash
的作業控制命令包括bg fg kill wait disown suspend
。- 該命令是bash內建命令,相關的幫助信息請查看
help
命令。
外部命令
概要
1kill [-signal|-s signal|-p] [-q value] [-a] [--] pid|name...
2kill -l [number] | -L
主要用途
-
發送信號到進程(可以爲多個)。
-
列出信號。
選項
1-s, --signal signal 要發送的信號,可能是信號名稱或信號對應的數字。
2-l, --list [number] 打印信號名稱或轉換給定數字到信號名稱。信號名稱可參考文件(/usr/include/linux/signal.h)。
3-L, --table 和'-l'選項類似,但是輸出信號名稱以及信號對應的數字。
4-a, --all 不要限制“命令名到pid”的轉換爲具有與當前進程相同的UID的進程。
5-p, --pid 打印目標進程的PID而不發送信號。
6--verbose 打印信號以及接收信號的PID。
7-q, --queue value 使用sigqueue(3)而不是kill(2)。參數value是信號對應的數字。
8 如果接收進程已爲此信號安裝了處理程序將SA_SIGINFO標記爲sigaction(2),則可以獲取
9 該數據通過siginfo_t結構的si_sigval字段。
10--help 顯示幫助信息並退出。
11--version 顯示版本信息並退出。
參數
接收信號的進程列表可以是PID以及name的混合組成。
PID:每一個PID可以是以下四種情況之一:
狀態 | 說明 |
---|---|
n | 當n大於0時,PID爲n的進程接收信號。 |
0 | 當前進程組中的所有進程均接收信號。 |
-1 | PID大於1的所有進程均接收信號。 |
-n | 當n大於1時,進程組n中的所有進程接收信號。當給出了一個參數的形式爲“-n”,想要讓它表示一個進程組,那麼必須首先指定一個信號,或參數前必須有一個“--”選項,否則它將被視爲發送的信號。 |
name:使用此名稱調用的所有進程將接收信號。
例子
1> sleep 20 &
2
3# 列出對應的PID。
4> kill -p sleep
523021
返回值
- 0 成功。
- 1 失敗。
- 64 部分成功(當指定了多個進程時)。
注意
- 該命令是
GNU coreutils
包中的命令,相關的幫助信息請查看man -s 1 kill
或info coreutils 'kill invocation'
。 - 啓動或關閉內建命令請查看
enable
命令,關於同名優先級的問題請查看builtin
命令的例子部分的相關討論。 - 與
kill
命令類似的有xkill
,pkill
,killall
等,用於不同的目的和場景。
參考鏈接
來源:https://github.com/jaywcjlove/linux-command
最後修改於: Wednesday, January 31, 2024
版權申明:
- 未標註來源的內容皆為原創,未經授權請勿轉載(因轉載後排版往往錯亂、內容不可控、無法持續更新等);
- 非營利為目的,演繹本博客任何內容,請以'原文出處'或者'參考鏈接'等方式給出本站相關網頁地址(方便讀者)。