重慶分公司,新征程啟航
為企業提供網站建設、域名注冊、服務器等服務
為企業提供網站建設、域名注冊、服務器等服務
kill -9 PID —— 強制殺死一個進程。
創新互聯建站2013年至今,先為通榆等服務建站,通榆等地企業,進行企業商務咨詢服務。為通榆企業網站制作PC+手機+微官網三網同步一站式服務解決您的所有建站問題。
1、kill -9 殺死后臺運行的進程。
紅色下劃線:sleep 10000 —— 后臺運行延時 10000 秒的命令,進程 ID 為1317。
黃色下劃線:ps —— 列出 1317 sleep 命令的進程。
(PID:進程 ID、PGID:線程組 ID、SID:會話 ID、TTY:進程運行的終端,標識那個終端控制。(pts遠程終端、tty系統終端)、TIME:進程運行的時間 和 CMD:命令的名稱和參數)。
jobs -l —— 列出后臺運行的命令,1317 sleep 命令正在后臺運行。
藍色下劃線:kill -9 1317—— 殺死?1317 進程。
綠色方框:ps 查詢進程,1317 sleep進程已經被殺死(Killed)。jobs -l 已經沒有后臺運行的1317 sleep 命令。
2、kill -9 終止掛起的進程。
紅色下劃線:執行 sleep 10000 后 ctrl + z 掛起。
黃色下劃線:ps -j 查看進程,有 1342 sleep 的進程。jobs -l 查看后臺,1342 sleep 的狀態是 stopped 暫停狀態。
藍色下劃線:kill -9 殺死 1342 進程。此時系統沒有反饋信息。
綠色下劃線:ps -j 查看進程,1342 sleep 已經被殺死(Killed)。jobs -l 查看后臺,已經沒有了? 1342?sleep。
從實驗上看:
1、后臺命令運行時(Running),執行 kill -9 可以強殺進程。
2、掛起命令,處于暫停狀態時(Stopped),執行 kill -9 后通過 ps 查詢進程, 可以看到進程已經被殺死。jobs 也查不到有后臺命令。(這里和 kill -2、kill -15 不一樣。kill -2、kill -15 在掛起命令,處于暫停狀態時(Stopped)時執行,通過 ps 還可以查詢到進程,jobs 也可以查詢到后臺仍有處于暫停狀態的命令。)
1、首先,連接相應linux主機,進入到linux命令行狀態下,等待輸入shell指令。
2、其次,以終止進程號1984的nginx子進程為例,在linux命令行中輸入:kill -9 1984。
3、最后,按下回車鍵執行shell指令,此時會看到進程號1984的nginx子進程被成功終止了。
kill 命令通常用于終止執行中的程序。 kill可將指定的信息送至程序。默認送的信息為SIGTERM (信息編號為15),代表關閉進程
kill -9 pid kill -15 pid (效果等同于 kill pid )
其中 9 和 15 指的是信息編號
什么是信息編號
使用kill -l 命令可以查看信息及編號
信息編號代指不同的信息,不同的信息有不同的含義
可以看到 9代表 SIGKILL,15 代表 SIGTERM 所以 ==kill -9 pid 代表 發送SIGKILL信息給這個pid的程序 kill -15 pid 代表 發送SIGTERM信息給這個pid的程序==
那么 SIGTERM(15)和 SIGKILL(9)有什么區別
SIGTERM :當進程接收到SIGTERM后,大多會先釋放自己的資源,再停止進程,屬于正常關閉進程,但是如果進程正在工作,處理io等,不會立馬關閉,或者 進程卡死的情況,都會導致SIGTERM不起作用。
SIGKILL : SIGKILL信號要求進程 立即關閉,強制關閉進程。
工作中關閉進程時,==先kill pid(默認使用編號15),如果不起作用 再使用 kill -9 pid。==
查看nginx的pid: ps -ef | grep nginx
可以看到nginx的主進程編號 是 7901
正常關閉 nginx的主進程
kill -15 7901 或者 kill 7901 再次查看nginx的進程 發現已經關閉
啟動nginx,查看進程號,再強制關閉 nginx
nginx?
ps -ef | grep nginx? ??
kill -9 9827? ??
ps -ef | grep nginx?
可以看到 kill -9 只是強制關閉了 nginx的主進程,由于不是正常關閉,worker進程并沒有被關閉,這就是強制關閉的弊端,再次關閉worker進程 kill -9 9828
1、kill 命令默認使用的信息編號及信息是什么?
:15,代表正常關閉進程
2、kill -9 pid 中 信息編號9代表什么信息?
:強制關閉進程
3、如何查看kill的信息編號?
:kill -l
4、寫出正常關閉 進程編號 為 233 的命令
:kill -15 pid? or? kill pid
5、寫出強制關閉 進程編號 為 233 的命令
:kill -9 pid
kill -15 PID —— 正常方式終止一個程序。中斷進程時應首先用 -15,以便于其能夠預先清理臨時文件和釋放資源。-9?作為最后手段,應對那些失控的進程。
1)、kill -15 終止后臺運行的進程。
紅色下劃線:sleep 10000 —— 后臺運行延時 10000 秒的命令,進程 ID 為1550。
黃色下劃線:ps -j —— 列出 1550 sleep 命令的進程。
(PID:進程 ID、PGID:線程組 ID、SID:會話 ID、TTY:進程運行的終端,標識那個終端控制。(pts遠程終端、tty系統終端)、TIME:進程運行的時間 和 CMD:命令的名稱和參數)。
jobs -l —— 列出后臺運行的命令,1550 sleep 命令正在后臺運行。
藍色下劃線:kill -15 1550—— 終止1550 進程。系統反饋?Terminated?終止 1550 進程。
綠色方框:ps -j 已查詢不到?1550 sleep 的進程。jobs -l 也沒有后臺運行的命令。
2)、kill -15 配合 fg 查看終止掛起的進程。
紅色下劃線:sleep 10000 延時 10000 秒后 ctrl + z 掛起。
黃色下劃線:ps -j 查看進程,有 1578 sleep 的進程。jobs -l 查看后臺,1578 sleep 的狀態是 stopped 暫停狀態。
藍色下劃線:kill -15 終止 1578 進程。此時系統沒有反饋信息。
綠色下劃線:ps -j 查看進程,1578 sleep 進程仍在。jobs -l 查看后臺,1578 sleep 的狀態是 stopped 暫停狀態。
紅色下劃線:fg 1 把后臺運行的 sleep 調至前臺繼續運行。此時,系統首先提示 sleep 已經調至前臺運行,然后又提示?Terminated 終止進程。
藍色下劃線:ps -j 查看進程已經沒有了 1578 sleep 進程。jobs -j 查看也后臺也沒有命令在執行。
3)、kill -15 配合 bg 查看終止掛起的進程。
同樣的,首先sleep 10000 后 ctrl + z 掛起。通過 ps -j 查看后臺進程有 1590 sleep進程,josb -l 查看后臺也有狀態為 stopped? 的1590 sleep 命令。 然后,kill -15 1590 終止 1590 進程。再次通過 ps -j 查看1590 sleep進程仍在,josb -l 查看后臺還有狀態為 stopped? 的1590 sleep 命令。
紅色下劃線:bg 1 把掛起的 sleep 命令繼續運行。此時,系統反饋 sleep 命令在后臺運行。
黃色下劃線:ps -j 查看進程,系統反饋 sleep 進程已經? Terminated? 終止。jobs -l 也查詢不到sleep 在后臺運行。
從實驗上看:
1、后臺命令運行時(Running),執行 kill -15 可以終止進程。
2、掛起命令,處于暫停狀態時(Stopped),執行 kill -15 后通過 ps 還可以查詢到進程, jobs還可以查詢到后臺命令,狀態仍然是 Stopped 暫停狀態。用 fg 把暫停的后臺進程調至前臺運行時,系統反饋一行 sleep 命令調至前臺運行。跟著一條 Terminated 終止進程。再用 ps 查詢不到進程。用 jobs 已經查詢不到后臺命令。(這里和 kill -2 不同,kill -2 后用 fg 系統只反饋一行 sleep 命令調至前臺運行,沒有提示進程已中斷。)
3、掛起命令,處于暫停狀態時(Stopped),執行 kill -15 后通過 ps 還可以查詢到進程, jobs還可以查詢到后臺命令,狀態仍然是?Stopped 暫停狀態。用 bg 把暫停的后臺命令恢復運行時,系統反饋 sleep 命令在后臺運行。再用 ps 查詢進程已經終止,用 jobs 已經查詢不到后臺命令。(這里和 kill -2一樣)