1. 河豚號 > 生活百科 >

linux殺死進程命令代碼(linux命令kill結束進程)

普通人的視角,進程就是正在運行著的程序。

從程序員的視角來看,認知要復雜得多。進程是程序正在運行的一個實例。它由程序指令,和從文件、其它程序中讀取的數據或系統用戶的輸入組成。它也是應用層運行、占據著內存、與內核時常交互的動態運行實體。

進程是由內核定義的抽象的實體,內核為進程分配用來執行程序的各項系統資源。

從內核 的層面來看,進程由用戶內存空間和一系列內核數據結構組成。其中,用戶內存空間包含了程序代碼和代碼使用的變量,內核數據結構用于維護進程的狀態信息。這些記錄在內核數據結構的信息有:進程標識號IDs、虛擬內存表、打開文件描述符表、信號傳遞及處理的相關信息、進程資源使用和限制、當前工作目錄、環境變量、命令行等等大量的相關信息。

1 進程的類型

Linux 中的進程主要分兩種類型:

前臺進程

這個也稱為交互式進程 – 這些進程由終端或圖形界面啟動,響應用戶操作。也就是說,需要用戶來啟動這樣的進程。雖然它們部分可以設為開機啟動,但它們不是作為Linux操作系統功能/服務的一部分去自動啟動的。

后臺進程

也稱為非交互式/自動進程, 這些進程沒有連接到終端,它們不需要任何用戶輸入。這些進程以系統級服務最多。

要提一下,在Linux中還有一個很重要的進程,這是守護進程deamon。其實這種deamon進屬于程后臺進程的特殊類型,它們在系統啟動時啟動,并作為服務一直運行;它們不會死亡。它們自發地作為系統任務啟動(作為服務運行)。但是,它們能被用戶通過 init 進程控制。

2 linux上進程的4種狀態

1. 運行Running,系統中的當前進程,或者準備運行(等待分配 CPU 單元)。

2 等待Waiting,進程正在等待某個事件的發生或者系統資源

內核也會區分兩種不同類型的等待進程。一種是可中斷等待進程(interruptible waiting processes,這種是可以被信號中斷的,另一種就是不可中斷等待進程(uninterruptible waiting processes)正在等待硬件條件,不能被任何事件/信號中斷。

3. 停止Stopped,進程已經被停止了,通常是由于收到了一個信號,比如SIGSTOP, SIGSTP, SIGTIN, SIGTOU信號后停止運行。正在調試的進程一般都處于這個狀態。

4. Zombie僵死,進程已終止, 但是進程表process table中仍然有它的條目,進程描述符尚在, 直到父進程調用wait4()系統調用后釋放。

 

Linuxt每日命令005-進程原理、查看、管理

 

3 Linux 如何識別進程?

如果你沒名字,怎么讓別人叫你?同理,事物都是相通的,進程若無標志,Linux系統如何識別?

Linux 是一個多用戶、多進程的系統,不同的用戶能系統上運行各種各樣的程序,而且同一程序有可能運行多個進程。比如,多人可登錄到你的Linux系統,啟用終端tty,你個人也可以啟動多個tty。內核必須唯一標識程序運行的每個實例。

程序由它的進程 ID(PID)和它父進程的進程 ID(PPID)識別的,所以進程可分為父進程和子進程。

父進程 – 這些是在運行時創建其它進程的進程。

子進程 – 這些是在運行時由其它進程創建的進程。

查找進程 ID

可以用 pidof 命令查找某個進程的進程 ID,比如Linux上所有進程的老祖宗init 進程的pid都是1:

$ pidof init

1

如果你用一個程序打開了多個實例,比如chrome打開了多個網頁,pid的操作畫風是這樣的:

$pidof chrome

8885 7610 7588 6429 5100 5085 4547 4382 4355 4307 3598 3580 3559

3546 3514 3488 3453 3447 3413 3387 3367 3359 3355 3338 3302 3286

3270 3237 3224 3158 2874 2861 2833 2806 2677 2565 2553 2550 2528

2524 2523 2512

有兩個shell命令,可以找當前 shell 的進程 ID 以及它父進程的進程 ID。

$echo $PPID

2758 父進程ID

$ echo $$

8518 當SHELL進程D

4 后臺任務

從終端啟動一個進程,在命令的最后使用&符號做參數,該進程就被立即送進后臺。比如下面的命令系列:

 

Linuxt每日命令005-進程原理、查看、管理

 

也可以按Ctrl + Z 暫停執行一個程序,并把它發送到后臺(按Ctrl+Z,這樣當前終端會給進程發送 SIGSTOP 信號),從而暫停它的執行;它就會變為空閑進程。

 

Linuxt每日命令005-進程原理、查看、管理

 

要在后臺繼續運行上面被暫停的命令,使用 bg 命令。接上面的例子。

 

Linuxt每日命令005-進程原理、查看、管理

 

要把后臺進程發送到前臺,使用 fg 命令以及任務的 ID,類似:

 

Linuxt每日命令005-進程原理、查看、管理

 

5 在 Linux 中用shell命令查看活躍進程

ps、top,查看進程

ps 和 top 命令是兩個最為常用的進程查看命令。這個命令的功能都很強大。熟悉這兩個命令的常見用法,是在Linux中進行日常操作管理的基礎。

顯示進程信息,包括無終端的(x)和針對用戶(u)的進程:如USER, PID, %CPU, %MEM等

ps -aux

按內存資源的使用量對進程進行排序

ps -aux | sort -rnk 4

按 CPU 資源的使用量對進程進行排序

ps -aux | sort -nk 3

按UID、PID、PPID、C、STIME、TTY、TIME、CMD

ps -ef

當然,上面的還可以用grep來過濾。

ps -ef | grep tty

top命令是Linux下常用的性能分析工具,能夠實時顯示系統中各個進程的資源占用狀況,類似于Windows的任務管理器。top顯示進程的數據包括 PID、進程屬主、優先級、%CPU、%memory等??梢允褂眠@些顯示數據指示出資源使用量。

 

Linuxt每日命令005-進程原理、查看、管理

 

pgrep命令

這個命令掃描當前運行的進程,然后按照命令匹配條件列出匹配結果到標準輸出。對于通過名字檢索進程號是很有用。

 

Linuxt每日命令005-進程原理、查看、管理

 

使用參數”-o“,當匹配多個進程時,顯示進程號最小的那個。參數”-n“則相反,顯示進程號最大的那個。

~$ pgrep -l sh 顯示結果如上圖所示

~$ pgrep -l -o sh

157 zswap-shrink

~$ pgrep -l -n sh

17341 gnome-screensho

pgrep支持正則表達式條件,通常會與kill命令聯用,在指定條件下殺死問題進程。

pstree顯示進程樹

pstrees以樹狀圖來展示進程之間的關系,可以直觀的查看進程父子關系。執行時最好帶“-g”參數,這樣可以顯示進程的PID號。

 

Linuxt每日命令005-進程原理、查看、管理

 

htop

top只能顯示系統進程狀況,但它不能與用戶交互。一個可以交互的是htop,這個不是系統自帶的,需要“sudo apt install htop”去安裝。htop通過文字圖形化地顯示每一個進程的CPU和內存使用量、swap使用量。使用上下光標鍵選擇進程,F7和F8改變優先級,F9殺死進程。

 

Linuxt每日命令005-進程原理、查看、管理

 

top與htop運行時,都可以按q鍵退出。

6 在 Linux 中用shell命令干預躍進程

kill、killall 殺死進程

kill

kill命令用于發送信號來結束進程,如果上面的命令不能殺死進程,那么帶“-9”參數試試。

kill -9

不知道進程PID,或者想用名字殺死進程時候,用killall命令。

killall -9 - 殺死所有同名進程

使用kill或killall命令前一定要小心,因為進程的內部操作有可能沒有完成,可能正在寫入文件,你這樣咔嚓一下就給殺掉了,進程沒來得及清理現場就game over了,有可能帶來很大風險。

htop殺死進程

因為系統進程實在太多了,在htop中如果想殺死某個進程,最好先F3查詢,然后再按F9殺死。

nice、renice命令

在用top、htop顯示進程時,有一列是NI,nice value,表示進程的優先級。進程優先級值的范圍從-20到19。值越低,優先級越高。提高一個進程的優先級,內核會分配更多CPU時間片給這個進程。默認情況下,進程以0的優先級啟動。

通過nice命令的幫助,用戶可以設置和改變進程的優先級。當然,沒有root權限,我們不可能達到這一目的。

sudo nice --3 kolourpaint “kolourpaint”是一個類似于windows上的畫圖的工具軟件

 

Linuxt每日命令005-進程原理、查看、管理

 

然后就可以看到優先級為-3的kolourpaint進程。

renice這個命令可以改變正在運行的進程優先值。注意,用戶只能改變屬于他們自己的進程的優先值。

命令“renice -n -p PID” 改變指定進程的優先值,接上例,執行

$ sudo renice -n 6 -p 16217

16217 (process ID) 舊優先級為 -3,新優先級為 6

用htop查看,系統已經運行的kolourpaint進程NI值已經由-3變成了6。

 

Linuxt每日命令005-進程原理、查看、管理

 

7 其它一些與進程相關的命令

w命令。是的這個命令就是一個“w”。用來查看登錄者的信息及他們的行為。

提供當前登錄的用戶及其正在執行的進程的信息。顯示信息頭包含信息,如當前時間、系統運行時長、登錄用戶總數、過去的1,5,15分鐘內的負載均衡數

who命令,查看登錄服務器的用戶信息

whoami命令,顯示自己在系統中的用戶名

logname命令,可以顯示自己初次登錄到系統中的用戶名

tty命令,來查看所連接的設備或終端

last命令,查看最近1個月用戶登錄服務器的情況

8 進程資源限制

ulimit命令,用來查看進程在系統上的資源限制。“ulimit -a“顯示當前用戶關聯的資源限制。

 

Linuxt每日命令005-進程原理、查看、管理

 

該命令用于控制系統資源在shell和進程上的分配量。對于一般人員沒有啥價值,反正你也不會要求太多的資源。但對系統管理員來說可是不一樣,真正的大系統,資源管理量巨大。這個命令可以管理員,管理重度使用和存在性能問題的系統。限制資源大小,確保重要進程持續運行,調整其他進程不會占用過多資源。

Linux關于進程的命令非常豐富,且很多命令參數眾多,功能強大,并且多個命令可以用管道、重定向等方式來組合實用。這里也只能是一個簡介而已。

本文由網上采集發布,不代表我們立場,轉載聯系作者并注明出處:http://www.seensnowboarding.com/shbk/39463.html

聯系我們

在線咨詢:點擊這里給我發消息

微信號:15705946153

工作日:9:30-18:30,節假日休息

国产精品亚洲w码日韩中文|国产高清露脸孕妇系列|久久国语露脸国产精品|久久久777精品电影网影网|欧美高大丰满freesex