這個殺手不太冷-kill家族

im半癲發表於2020-12-13

這個殺手不太冷-kill家族

kill家族: 
kill:        # 刪除執行中的程式或工作
killall:     # 使用程式的名稱來殺死程式,使用此指令可以殺死一組同名程式
pkill:       # 用於殺死一個程式,它會殺死指定名字的所有程式,類似於 killall 命令

kill

語法格式:
'kill <引數> <程式號>'
常用引數:
-l:     # 列出系統支援的訊號(常用訊號:1、9、15)
-s:     # 指定向程式傳送的訊號
-a:     # 處理當前程式時不限制命令名和程式號的對應關係
-p:     # 指定kill命令只列印相關程式的程式號,而不傳送任何訊號
命令例項:
1:
KnowledgeIsPower:~ # kill -l    [這會列出64個訊號,kill預設是15訊號(正常殺死一個程式),kill -1 pid號(重新載入程式),kill -9 pid號(這個比較粗暴,強制殺死指定pid號的程式)]
2:
KnowledgeIsPower:~ # ps -ef | grep sshd
root       1425      1  0 06:54 ?        00:00:00 /usr/sbin/sshd -D
root       1561   1425  0 06:54 ?        00:00:06 sshd: root@pts/0
root       1564   1425  0 06:54 ?        00:00:00 sshd: root@notty
root      10186   1567  0 07:18 pts/0    00:00:00 grep --color=auto sshd
KnowledgeIsPower:~ # kill 1561   # 這個時候,我的ssh遠端連線就被斷開了
區別:
'使用kill命令殺死程式,需要先用ps或者top等命令,查詢程式所在的pid號才可以'

killall

語法格式:
killall <引數>
常用引數:
-l:     # 列出系統支援的訊號(和kill一樣)
-p:     # 殺死程式所屬的程式組
-i:     # 互動式殺死程式,殺死程式前需要進行確認
-u:     # 殺死指定使用者的程式
命令例項:
KnowledgeIsPower:~ # killall -9 sshd    # 同樣的,我的ssh遠端連線再次被我咔嚓了
區別:
1: killall比kill方便的地方在於,不需要pid號,只需要有服務的名稱,就可以殺死程式
2: suse12會自帶killall這個命令;centos則需要安裝psmisc才會有killall這個命令

pkill

語法格式:
pkill <引數>
命令例項:
KnowledgeIsPower:~ # pkill sshd  # 同樣的,我的ssh遠端連線再次被我咔嚓了
區別:
'pkill 和 killall 差不多,都是殺死和指定服務名稱相關的程式'

跑路小技巧

'kill命令只能殺死單一的程式,並且依賴程式pid號'
'killall和pkill都是通過服務名,殺死和服務相關的所有程式,所以,這兩個命令需要慎用,在你知道會帶來怎麼樣後果的情況下,才可以使用,不然,自己怎麼涼的都不知道,多難受'

相關文章