Linux kill 命令用於終止進程,其用法步驟如下:
需要准備的材料分別是:電腦、linux連接工具。
1、首先連接上linux主機,進入命令行狀態。
② 4-5 Linux 中斷進程 --- kill (kill -2 實驗)
1、信號:傳遞給 Liunx 的事件發生通知機制。
2、kill -l:顯示所有信號。一共有62個信號(沒有32、33)。
3、常用的信號有:
kill -2 PID —— 正常中斷進程(Ctrl + C 一樣)。程序在結束之前,能夠保存相關數據,然後再退出。
kill -9 PID —— 強制殺死一個進程。
kill -15 PID —— 正常方式終止一個程序。中斷進程時應首先用 -15,以便於其能夠預先清理臨時文件和釋放資源。-9 作為最後手段,應對那些失控的進程。
--------------------------------------------------------------------------------
1)、kill -2 中斷後台運行的進程。
紅色下劃線:sleep 10000 & —— 後台運行延時 10000 秒的命令,進程 ID 為1516。
ps -j —— 以作業格式列出進程信息,可以看到 1516 sleep 命令的進程。
(PID:進程 ID、PGID:線程組 ID、SID:會話 ID、TTY:進程運行的終端,標識那個終端控制。(pts遠程終端、tty系統終端)、TIME:進程運行的時間 和 CMD:命令的名稱和參數)。
jobs -l —— 列出後台運行的命令,可以看到 1516 sleep 命令正在後台運行。
黃色下劃線:kill -2 1516 —— 中斷1516 進程。執行成功後,按 Enter 回車系統會給出提示Interrupt 提示(中斷進程)。
藍色方框:ps -j 已查詢不到 1516 sleep 的進程。jobs -l 也沒有後台運行的命令。
2)、kill -2 配合 fg 查看中斷掛起的進程。
紅色下劃線:前台執行 sleep 10000 (延時10000秒)後 ctrl + z 掛起。
黃色下劃線:ps -j 查看進程,可以看到 1344 sleep 進程。jobs -l 查看後台進程 1344 的狀態是stopped 暫停狀態。
藍色下劃線:kill -2 1344 中斷 1344 進程。
綠色下劃線:ps -j 查看進程,仍有 1344 sleep 進程。jobs -l 查看後台進程 1344 的狀態是stopped 暫停狀態。
暫時這樣看,好像 kill -2 並沒有起到中斷進程的作用。
然而,用 fg 把後台的命令調至前台運行時可以發現 1344 sleep 已經被中斷。
紅色下劃線:fg 把已經執行了 kill -2, 狀態為 stopped 的1344 sleep命令調至前台執行。系統也反饋已經調至前台執行。(此時,實際上已經執行了 kill -2 中斷了進程)
黃色方框:ps -j 已經沒有了 1344 sleep 的進程。
藍色方框:jobs -l 後台也沒有指令。
3)、kill -2 配合 bg 查看中斷掛起的進程。
通過上面的思路,kill -2 配合 bg 實驗看看效果。同樣的首先掛起一個命令,狀態為 stopped 暫停。然後用 bg 命令恢復執行。
前面的步驟都是一樣,掛起一個命令。通過 ps 和 jobs 查看進程和後台確認有 1379 的進程,狀態為 stopped 暫停。然後執行 kill-2 中斷進程,再次通過ps 和 jobs 查看進程和後台命令。確認狀態為 stopped 1379 的進程仍然存在。
此時,用 bg 恢復運行掛起的命令,系統提示 sleep 命令已恢復在後台運行。然而通過 ps -j 查看進程會發現 sleep 已經被中斷。jobs -l 查看後台也沒有了運行的 sleep 命令了。
從實驗上看:
1、後台命令運行時(Running),執行 kill -2 可以中斷進程。
2、掛起命令,處於暫停狀態時(Stopped),執行 kill -2 後通過 ps 還可以查詢到進程, jobs還可以查詢到後台命令,狀態仍然是 Stopped 暫停狀態。實際上,用 fg 把暫停的後台進程調至前台運行時,系統反饋 sleep 命令調至前台運行。而再用 ps 查詢不到進程,已經中斷了進程。用 jobs 已經查詢不到後台命令。
3、掛起命令,處於暫停狀態時(Stopped),執行 kill -2 後通過 ps 還可以查詢到進程, jobs還可以查詢到後台命令,狀態仍然是 Stopped 暫停狀態。用 bg 把暫停的後台命令恢復運行時,系統反饋 sleep 命令在後台運行。再用 ps 查詢進程已經中斷,用 jobs 已經查詢不到後台命令。
③ linux系統怎麼kill進程
Linux最常用kill命令來結束進程,但是kill命令需要用進程的PID作為參數。如何知道指定進程的PID呢?如果是通過進程命令的名字來查看對應PID,可以通過ps命令或pstree命令看到它的PID;如果是通過網路監聽埠號查看進程,需要用netstat命令看看埠號對應的進程的PID。
ps命令用於查看系統所有進程,而pstree命令以樹狀顯示進程之間的關系,有助於判斷要殺死哪個進程。記住在它們顯示的結果中記下需要結束的進程PID。ps命令的常用用法是:
ps aux
-a參數表示不與終端有關的進程也顯示出來。
pstree命令的常見用法是:
pstree -Aup
-p參數表示列出進程PID。
netstat命令可以查看監聽埠的進程是哪個,常用的方式是:netstat -tlnp
這條命令的意思是列出系統裡面監聽網路連接的埠號和相應的進程PID。
參數說明:
-t:表示列出TCP連接(也可以加上-u參數表示同時列出UDP網路連接)
-l:表示列出正在網路監聽的服務
關鍵是下面兩個參數:
-n:表示以埠號來顯示
-p:表示列出進程PID
Local Address這一列下面就有埠號,可以看到它對應的PID是多少,還有Program name那一列是進程名字。同樣是要記下需要結束的進程的PID。
知道了指定進程的PID後,就可以用kill命令結束進程了:
kill -9 PID號碼
或者kill -2 PID號碼
-9參數是強制結束進程,而-2參數是相當於用鍵盤組合鍵Ctrl+C的方式正常結束進程。
④ 4-6 Linux 終止進程 --- kill (kill -15 實驗)
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一樣)
⑤ linux kill %1 是什麼意思
Linux kill 命令用於刪除執行中的程序或工作。
kill 可將指定的信息送至程序。預設的信息為 SIGTERM(15),可將指定程序終止。若仍無法終止該程序,可使用 SIGKILL(9) 信息嘗試強制刪除程序。程序或工作的編號可利用 ps 指令或 jobs 指令查看。kill %1這條命令表示殺死一個後台程序,這個後台程序的「工作號碼(jobnumber)」是1號。命令查詢看下圖:
⑥ linux kill命令
linux kill命令使用場景:當需要中斷一個前台進程的時候,通常是使用< Ctrl+c >組合鍵;但是對於一個後台進程恐怕就不是一個組合鍵所能解決的了,這時就必須求助於kill命令。
kill命令是通過向進程發送指定的信號來結束進程的。如果沒有指定發送信號,那麼默認值為TERM信號。TERM信號將終止所有不能捕獲該信號的進程。至於那些可以捕獲該信號的進程可能就需要使用kill(9)信號了,該信號是不能被捕捉的。
kill命令的語法:
kill [-s 信號 | -p ] [ -a ] 進程號
kill -l [信號]
說明:-s 指定需要送出的信號。既可以是信號名也可以對應數字。
-p 指定kill命令只是顯示進程的pid,並不真正送出結束信號。
-l 顯示信號名稱列表,這也可以在/usr/include/linux/signal.h文件中找到。
kill命令的使用:
[舉例] 在執行一條find指令時由於時間過長,決定終止該進程。
首先應該使用ps命令來查看該進程對應的PID,鍵入ps,顯示如下:
PID TTY TIME COMMAND
285 1 00:00:00 -bash
287 3 00:00:00 -bash
289 5 00:00:00 /sbin/mingetty tty5
290 6 00:00:00 /sbin/mingetty tty6
312 3 00:00:00 telnet bbs3
341 4 00:00:00 /sbin/mingetty tty4
345 1 00:00:00 find / -name foxy.jpg
348 1 00:00:00 ps
可以看到該進程對應的PID是345,現在使用kill命令來終止該進程。鍵入:
# kill 345
再用ps命令查看,就可以看到,find進程已經被殺掉了。