Linux進程/進程管理工具
Linux進程概念
Linux下進程的管理(進程管理命令以及一些工具)
1. Linux進程的概念
進程是操作系統的概念,每當我們執行一個程序時,對於操作系統來講就創建了一個進程,在這個過程中,伴隨著資源的分配和釋放。可以認為進程是一個程序的一次執行過程。
通俗點講,想象一臺獨立的電腦,裏面有很多用戶自行安裝的程序,用戶打開應用程序,這個操作就是把程序調到內存中執行,在內存中執行的這個“程序”就是進程,無論實在Linux中還是Windows中,產生進程的同時都會生成一個ID稱之為PID,也就是進程號。進程從發起到最後結束中間的過程中可能處於多種狀態,如下:
運行狀態
就緒狀態:ready 進程準備運行
睡眠狀態:sleeping 處於休眠狀態(分為可中斷睡眠和不可中斷睡眠:通常指被I/O阻塞的進程,等待I/O滿足之前無法繼續運行)
僵死狀態:zombie 找不到歸宿的進程,父進程不來管理或者父進程已經死掉
停止狀態:stopped 不可被調度運行
2. Linux下進程的管理
進程分為守護進程和前臺進程,守護進程即為系統引導過程中啟動的進程,與終端無關。前臺進程跟終端相關,通過終端啟動的進程,當然,也可以把在前臺運行的進程送往後臺,以守護模式運行
進程管理命令:ps/stat/top/htop/glances
2.1 ps :顯示系統當前進程的運行狀況
ps命令下面的選項集成了UNIX,GNU,BSD三種風格的選項,常用的有-ef/aux/axo
ps -ef:
UID/PID/PPID:該進程的發起者/進程號/父進程號
C: CPU的使用率,百分比
STIME:進程的啟動時間,即什麽時間啟動的進程
TTY:登陸者的終端位置,遠程登錄則提示pts/n。本地登錄顯示ttyn, ?表示系統進程
TIME: 進程實際花費CPU運行時間,不是系統時間
CMD: command縮寫,觸發此進程的命令
ps aux:
USER: 進程的發起者
PID: 進程號
%CPU:進程耗費CPU資源的百分比
%MEM:進程所占用物理內存的百分比
VSZ: 進程用掉的虛擬內存大小,單位KB
RSS: 進程占用的固定內存大小,單位KB
TTY: 進程在哪個終端運行
STAT:進程目前的狀態(狀態有好多種,如下)
R:running 運行狀態
S:interruptible sleeping 可中斷睡眠
D:uninterruptible sleeping 不可中斷睡眠
T:stopped 停止運行
Z:zombie 僵屍進程
s:session leader
+:前臺進程,占據終端的進程
l:多線程進程
<:高優先級進程
N:低優先級進程
TIME:進程實際使用CPU的時間
COMMAND:觸發進程的命令
ps axo :自定義顯示進程信息
常用的自定義選項:pid/command/psr/pri/ni
psr: 當前進程運行的CPU編號
pri: 當前進程的優先級
ni: 當前進程的nice值
自定義選項可以只用一個,若同時用多個時用 "," 隔開即可
很多時候直接顯示出來的信息,並不是我們想要找的,所以就需要過濾一下信息內容
pgrep: 搜索進程
-U : 僅顯示以指定用戶身份運行的進程
-G :僅顯示以指定用戶組身份運行的進程
-l :顯示PID和進程名
pidof : 顯示指定命令所啟動的進程ID
例:pidof vim
以上的一些查看進程相關信息的命令都是靜態的,當然,很多時候需要實時監控來獲取信息,所以也需要一些可以實現動態監測的工具
2.2 top : 相對ps 而言,ps僅是顯示靜態、執行時間點的進程狀態信息,top可以實現動態獲取進程信息
信息量有點繁瑣,不過很有條理
第一行:系統時間(09:34:00)、系統啟動到此時此刻鎖經過的時間(22:15)、當前系統已經登錄的用戶數量 3 users、系統在1,5,15分鐘的平均負載,數值越小表示系統剩余資源越多越空閑,如果這個值高於1,就需要註意當前系統負載可能過高
第二行:顯示的是目前進程的總量與個別程序在什麽狀態,圖示為1個正在運行、143個出於睡眠狀態、0個停止狀態的進程、0個僵死狀態(如果有僵死狀態的程序則需要查看是哪個進程)
第三行:顯示CPU的整體負載,如果是多核心CPU,可以按下數字1來切換不同CPU的負載狀況
us: user space用戶運行程序占用CPU的百分比
sy: system(kernel space) 用於運行內核占用CPU的百分比
ni: nice 用戶進程空間所改變過優先級的進程占用CPU的百分比
di: idle空閑CPU百分比
wa: wait io 等待I/O所花費的時間
hi: hardware interrupt硬件中斷占用CPU的百分比
si:software interrupt軟件中斷占用CPU的百分比
st:stolen 被虛擬機“偷走”的百分比
第四行:表示物理內存的使用狀況
第五行:表示交換分區的狀況
第六行:默認空行,做輸入命令用途
top內建命令集:P:以占據CPU大小排序//M:以占據Memory空間大小排序//T:CPU累計占用時間的排序//l:顯示系統是否負載運行//t:是否顯示進程摘要信息以及CPU負載狀態//數字1:平均或者單獨顯示CPU的負載狀態//m:是否顯示內存相關的狀態信息//q: 退出//s:修改延遲時長//k:終止指定進程
2.3 htop :top 命令的增強版,默認未安裝,需要epel源安裝
大體上看起來跟top差不多,不過顏色至少是很好看了
htop界面所支持的交互式命令:
u:選擇顯示指定用戶的進程
l:顯示光標所在進程所打開的文件列表
s:顯示光標所在進程執行的系統調用
a:綁定進程到指定的CPU
#:快速定位光標至PID為#的進程上
t:顯示樹狀結構(進程之間的關系樹狀圖)
2.4 glances : 可以在終端上實時顯示重要的系統信息,並動態的對其更新,這個工具可以作用於任何終端屏幕,並且不會消耗大量的CPU資源,通常低於2%。此外glances工具可以將數據捕獲生成一個文件,便於日後分析或繪制圖形,輸出文件可以是電子表格的形式或者html格式
默認是沒有安裝的,可以用epel源安裝
glances工具還支持遠程模式:
Server:以監聽模式啟動glances
啟動方式:glances -s -B IPADDR
-B 用於指明監聽本地地址
Client:以遠程模式啟動glances,遠程煉乳指定服務器,並Server上的相關性能數據
啟動方式:glances -c IPADDR
-c 用於連入的服務器的地址
當系統出現問題的時候,排查的過程中這些工具可能都會用到,因為每一個工具或簡單或復雜,都有它自己的用途,很多情況下從最簡單的工具排查問題開始,一步一步到最後使用類似htop、glances一類的強大工具,總有一個能找出問題所在
Linux進程/進程管理工具