Linux進程操作簡單小結 linux上進程有5種狀態: 1.運行(正在運行或在運行隊列中等待) 2.中斷(休眠中,受阻,在等待某個條件的形成或接受到信號) 3.不可中斷(收到信號不喚醒和不可運行,進程必須等待直到有中斷發生) 4.僵死(進程已終止,但進程描述符存在,直到父...
Linux進程操作簡單小結
linux上進程有5種狀態:
1. 運行(正在運行或在運行隊列中等待)
2. 中斷(休眠中, 受阻, 在等待某個條件的形成或接受到信號)
3. 不可中斷(收到信號不喚醒和不可運行, 進程必須等待直到有中斷發生)
4. 僵死(進程已終止, 但進程描述符存在, 直到父進程調用wait4()系統調用後釋放)
5. 停止(進程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信號後停止運行運行)
ps命令用來靜態查看目前系統中,有哪些正在執行,以及它們的執行情況。可以不加任何參數。
ps -a :顯示當前終端的所有進程信息。
ps -u :以用戶的格式顯示進程信息
ps -x :顯示後臺進程運行的參數
本人喜歡直接三個參數連起來使用:ps -aux 這樣查到的信息更全更詳細。
例:
參數說明:
USER:該 process 屬於那個使用者賬號的
PID :該 process 的號碼
%CPU:該 process 使用掉的 CPU 資源百分比
%MEM:該 process 所占用的物理記憶體百分比
VSZ :該 process 使用掉的虛擬記憶體量 (Kbytes)
RSS :該 process 占用的固定的記憶體量 (Kbytes)
TTY :該 process 是在那個終端機上面運作,若與終端機無關,則顯示 ?,另外, tty1-tty6 是本機上面的登入者程式,若為 pts/0 等等的,則表示為由網路連接進主機的程式。
STAT:該程式目前的狀態,主要的狀態有
R :該程式目前正在運作,或者是可被運作
S :該程式目前正在睡眠當中 (可說是 idle 狀態),但可被某些訊號 (signal) 喚醒。
T :該程式目前正在偵測或者是停止了
Z :該程式應該已經終止,但是其父程式卻無法正常的終止他,造成 zombie (疆屍) 程式的狀態
START:該 process 被觸發啟動的時間
TIME :該 process 實際使用 CPU 運作的時間
COMMAND:該程式的實際指令
top動態查看進程使用狀況
23:59:58 當前時間
up 10:22 系統運行時間,格式為時:分
2 user 當前登錄用戶數
load average: 0.00, 0.00, 0.00 系統負載,即任務隊列的平均長度。三個數值分別為 1分鐘、5分鐘、15分鐘前到現在的平均值。
total 進程總數
running 正在運行的進程數
sleeping 睡眠的進程數
stopped 停止的進程數
zombie 僵屍進程數
Cpu(s):
xx% us 用戶空間占用CPU百分比
xx% sy 內核空間占用CPU百分比
xx% ni 用戶進程空間內改變過優先順序的進程占用CPU百分比
xx% id 空閑CPU百分比
xx% wa 等待輸入輸出的CPU時間百分比
xx%hi:硬體CPU中斷占用百分比
xx%si:軟中斷占用百分比
xx%st:虛擬機占用百分比
Mem:
1004412k total 物理記憶體總量
221404k used 使用的物理記憶體總量
783008k free 空閑記憶體總量
17268k buffers 用作內核緩存的記憶體量
Swap:
2031668k total 交換區總量
0k used 使用的交換區總量
2031608k free 空閑交換區總量
97902k cached 緩衝的交換區總量,記憶體中的內容被換出到交換區,而後又被換入到記憶體,但使用過的交換區尚未被覆蓋,該數值即為這些內容已存在於記憶體中的交換區的大小,相應的記憶體再次被換出時可不必再對交換區寫入。
序號 列名 含義
a PID 進程id
b PPID 父進程id
c RUSER Real user name
d UID 進程所有者的用戶id
e USER 進程所有者的用戶名
f GROUP 進程所有者的組名
g TTY 啟動進程的終端名。不是從終端啟動的進程則顯示為 ?
h PR 優先順序
i NI nice值。負值表示高優先順序,正值表示低優先順序
j P 最後使用的CPU,僅在多CPU環境下有意義
k %CPU 上次更新到現在的CPU時間占用百分比
l TIME 進程使用的CPU時間總計,單位秒
m TIME+ 進程使用的CPU時間總計,單位1/100秒
n %MEM 進程使用的物理記憶體百分比
o VIRT 進程使用的虛擬記憶體總量,單位kb。VIRT=SWAP+RES
p SWAP 進程使用的虛擬記憶體中,被換出的大小,單位kb。
q RES 進程使用的、未被換出的物理記憶體大小,單位kb。RES=CODE+DATA
r CODE 可執行代碼占用的物理記憶體大小,單位kb
s DATA 可執行代碼以外的部分(數據段+棧)占用的物理記憶體大小,單位kb
t SHR 共用記憶體大小,單位kb
u nFLT 頁面錯誤次數
v nDRT 最後一次寫入到現在,被修改過的頁面數。
w S 進程狀態(D=不可中斷的睡眠狀態,R=運行,S=睡眠,T=跟蹤/停止,Z=僵屍進程)
x COMMAND 命令名/命令行
y WCHAN 若該進程在睡眠,則顯示睡眠中的系統函數名
z Flags 任務標誌,參考 sched.h
終止進程的介紹
kill 進程號 :終止某個進程
kill -9 進程號 :強制終止某個進程
kill -u 用戶名 :終止某個用戶的進程
這裡就簡單介紹常用的三種終止進程命令。
Linux查看某一進程運行路徑步驟只需三步:
一:先查看需要查詢的進程的進程號,ps 或者 top 也行
二:Linux在啟動一個進程時,系統會在/proc下創建一個以PID命名的文件夾,在該文件夾下會有我們的進程的信息。
cd /proc/PID :到達相應的進程目錄下麵。
三:運行ls -l
留意:
cwd符號鏈接的是進程運行目錄。
exe符號連接就是執行程式的絕對路徑。
cmdline就是程式運行時輸入的命令行命令。
environ記錄了進程運行時的環境變數。