Linux進程

部分轉自實驗樓。

Linux 為我們提供了一些工具來查看進程的狀態(tài)信息。我們可以通過 top 實時的查看進程的狀態(tài),以及系統的一些信息(如 CPU、內存信息等),我們還可以通過 ps 來靜態(tài)查看當前的進程信息,同時我們還可以使用 pstree 來查看當前活躍進程的樹形結構。

top 工具的使用

top 工具是我們常用的一個查看工具,能實時的查看我們系統的一些關鍵信息的變化:

$ top
image.png

top 是一個在前臺執(zhí)行的程序,所以執(zhí)行后便進入到這樣的一個交互界面,正是因為交互界面我們才可以實時的獲取到系統與進程的信息。在交互界面中我們可以通過一些指令來操作和篩選。

我們看到 top 顯示的第一排,

  • top 表示當前程序的名稱
  • 11:05:18 表示當前的系統的時間
  • up 8 days,17:12 表示該機器已經啟動了多長時間
  • 1 user 表示當前系統中只有一個用戶
  • load average: 0.29,0.20,0.25 分別對應1、5、15分鐘內cpu的平均負載(超過1表示有進程在排隊)

來看 top 的第二行數據,基本上第二行是進程的一個情況統計:

  • Tasks: 26 total 進程總數
  • 1 running 1個正在運行的進程數
  • 25 sleeping 25個睡眠的進程數
  • 0 stopped 沒有停止的進程數
  • 0 zombie 沒有僵尸進程數

來看 top 的第三行數據,這一行基本上是 CPU 的一個使用情況的統計了:

  • Cpu(s): 1.0%us 用戶空間進程占用CPU百分比
  • 1.0% sy 內核空間運行占用CPU百分比
  • 0.0%ni 用戶進程空間內改變過優(yōu)先級的進程占用CPU百分比
  • 97.9%id 空閑CPU百分比
  • 0.0%wa 等待輸入輸出的CPU時間百分比
  • 0.1%hi 硬中斷(Hardware IRQ)占用CPU的百分比
  • 0.0%si 軟中斷(Software IRQ)占用CPU的百分比
  • 0.0%st (Steal time) 是 hypervisor 等虛擬服務中,虛擬 CPU 等待實際 >- CPU 的時間的百分比

來看 top 的第四行數據,這一行基本上是內存的一個使用情況的統計了:

  • 8176740 total 物理內存總量
  • 8032104 used 使用的物理內存總量
  • 144636 free 空閑內存總量
  • 313088 buffers 用作內核緩存的內存量
  • 注意:
    系統中可用的物理內存最大值并不是 free 這個單一的值,而是 free + buffers + swap 中的 cached 的和。

來看 top 的第五行數據,這一行基本上是交換區(qū)的一個使用情況的統計了:

  • total 交換區(qū)總量
  • used 使用的交換區(qū)總量
  • free 空閑交換區(qū)總量
  • cached 緩沖的交換區(qū)總量,內存中的內容被換出到交換區(qū),而后又被換入到內存,但使用過的交換區(qū)尚未被覆蓋

再下面就是進程的一個情況了:

  • PID 進程id
  • USER 該進程的所屬用戶
  • PR 該進程執(zhí)行的優(yōu)先級 priority 值
  • NI 該進程的 nice 值
  • VIRT 該進程任務所使用的虛擬內存的總數
  • RES 該進程所使用的物理內存數,也稱之為駐留內存數
  • SHR 該進程共享內存的大小
  • S 該進程進程的狀態(tài): S=sleep R=running Z=zombie
  • %CPU 該進程CPU的利用率
  • %MEM 該進程內存的利用率
  • TIME+ 該進程活躍的總時間
  • COMMAND 該進程運行的名字

NICE 值叫做靜態(tài)優(yōu)先級,是用戶空間的一個優(yōu)先級值,其取值范圍是-20至19。這個值越小,表示進程”優(yōu)先級”越高;

PR 值表示 Priority 值叫動態(tài)優(yōu)先級,是進程在內核中實際的優(yōu)先級值,進程優(yōu)先級的取值范圍是通過一個宏定義的,這個宏的名稱是 MAX_PRIO,它的值為 140。Linux 實際上實現了 140 個優(yōu)先級范圍,取值范圍是從 0-139,這個值越小,優(yōu)先級越高。而這其中的 0 - 99 是實時進程的值,而 100 - 139 是給用戶的。

在上文我們曾經說過 top 是一個前臺程序,所以是可以交互的:

  • q 退出程序
  • I 切換顯示平均負載和啟動時間的信息
  • P 根據CPU使用百分比大小進行排序
  • M 根據駐留內存大小進行排序
  • i 忽略閑置和僵死的進程,這是一個開關式命令
  • k 終止一個進程,系統提示輸入 PID 及發(fā)送的信號值。一般終止進程用 15 信號,不能正常結束則使用 9 信號。安全模式下該命令被屏蔽。

ps 工具的使用

ps 工具有許多的參數,下面給大家解釋部分常用的參數:

  • 使用 -l 參數可以顯示自己這次登陸的 bash 相關的進程信息羅列出來
ps -l
image.png
$ ps aux  # 會羅列出所有的進程信息
image.png

信息代表的含義:

  • F 進程的標志(process flags),當 flags 值為 1 則表示此子程序只是 fork 但沒有執(zhí)行 exec,為 4 表示此程序使用超級管理員 root 權限
  • USER 進程的擁有用戶
  • PID 進程的 ID
  • PPID 其父進程的 PID
  • SID session 的 ID
  • TPGID 前臺進程組的 ID
  • %CPU 進程占用的 CPU 百分比
  • %MEM 占用內存的百分比
  • NI 進程的 NICE 值
  • VSZ 進程使用虛擬內存大小
  • RSS 駐留內存中頁的大小
  • TTY 終端 ID
  • S or STAT 進程狀態(tài)
  • WCHAN 正在等待的進程資源
  • START 啟動進程的時間
  • TIME 進程消耗CPU的時間
  • COMMAND 命令的名稱和參數

TPGID欄寫著-1的都是沒有控制終端的進程,也就是守護進程

STAT表示進程的狀態(tài),而進程的狀態(tài)有很多,如下所示

  • R Running.運行中
  • S Interruptible Sleep.等待調用
  • D Uninterruptible Sleep.不可中斷睡眠
  • T Stoped.暫?;蛘吒櫊顟B(tài)
  • X Dead.即將被撤銷
  • Z Zombie.僵尸進程
  • W Paging.內存交換
  • N 優(yōu)先級低的進程
  • < 優(yōu)先級高的進程
  • s 進程的領導者
  • L 鎖定狀態(tài)
  • l 多線程狀態(tài)
  • + 前臺進程

其中的 D 是不能被中斷睡眠的狀態(tài),處在這種狀態(tài)的進程不接受外來的任何 signal,所以無法使用 kill 命令殺掉處于D狀態(tài)的進程,無論是 kill,kill -9 還是 kill -15,一般處于這種狀態(tài)可能是進程 I/O 的時候出問題了。

若是查找其中的某個進程的話,我們還可以配合著 grep 和正則表達式一起使用

$ ps aux | grep zsh

此外我們還可以查看時,將連同部分的進程呈樹狀顯示出來

$ ps axjf
image.png

可以使用這樣的命令,來自定義我們所需要的參數顯示:

$ ps -afxo user,ppid,pid,pgid,command
image.png

pstree 工具的使用

通過 pstree 可以很直接的看到相同的進程數量,最主要的還是我們可以看到所有進程之間的相關性。

$ pstree
image.png
$ pstree -up
#參數選擇:
#-A  :各程序樹之間以 ASCII 字元來連接;
#-p  :同時列出每個 process 的 PID;
#-u  :同時列出每個 process 的所屬賬戶名稱。
image.png

kill 命令

發(fā)送指定的信號到相應進程。不指定型號將發(fā)送SIGTERM(15)終止指定進程。如果任無法終止該程序可用“-KILL” 參數,其發(fā)送的信號為SIGKILL(9) ,將強制結束進程,使用ps命令或者jobs 命令可以查看進程號。root用戶將影響用戶的進程,非root用戶只能影響自己的進程。

命令格式:

$ kill [參數] [進程號]

實例:

# 殺死進程
$ kill 12345
# 徹底殺死進程
$ kill -9 12345
# 殺死指定用戶所有進程
$ kill -9 $(ps -ef | grep hnlinux)  //方法一 過濾出hnlinux用戶進程 
$ kill -u hnlinux  //方法二
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容