進程管理學習筆記
一、狀態
1.正在運行或在運行隊列中等待[就緒隊列]) ,用狀態碼R表示
2. 中斷狀態(休眠中, 受阻, 在等待某個條件的形成或接受到信號) ,用狀態碼S表示
3. 不可中斷狀態(收到信號不喚醒和不可運行, 進程必須等待直到有中斷發生) ,用狀態碼D表示
4. 僵死狀態(進程已終止, 但進程描述符存在, 直到父進程調用wait4()系統調用後釋放) ,用狀態碼Z表示
5. 停止狀態(進程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信號後停止運行運行) ,用狀態碼T表示
PS工具標識進程的5種狀態碼:
D 不可中斷 uninterruptible sleep (usually IO)
R 運行 runnable (on run queue)
S 中斷 sleeping
T 停止 traced or stopped
Z 僵死 a defunct (”zombie”) process
<:高優先級進程
N:低優先級進程
+:前臺進程組中的進程
l:多線程進程
s:會話進程
二、進程間通信(IPC:Inter Process Communication)
共享內存
信號:Signal
kill -l 顯示所有可用的信號
1:SIGHUP: 讓一個進程不用重啟,就可以重讀其配置文件,並讓新的配置信息生效
2: SIGINT:Ctrl+c: 中斷一個前臺進程
9: SIGKILL:殺死一個進程(直接強行關閉進程)
15: SIGTERM:終止一個進程, 默認信號(釋放所有的資源)
Semaphore:通過打旗語與其他進程通信
...
指定殺死一個信號(默認15信號):
以top為例
信號號碼:kill 13310信號名稱:kill -SIGKILL
kill PID
killall COMMAND(需要殺掉多個進程時):killall httpd
二、指令
ps:
-e 顯示所有進程。
-f 全格式。
-h 不顯示標題。
-l 長格式。
-w 寬輸出。
-F 顯示更多的字段
-o 顯示指定字段(ps -o pid,comm,ni)
a 顯示終端上的所有進程,包括其他用戶的進程。
r 只顯示正在運行的進程。
x 顯示沒有控制終端的進程。
常用指令實例:
-elf
-ef
-eF
數據標簽:
UID //用戶ID、但輸出的是用戶名
PID //進程的ID
PPID //父進程ID
C //進程占用CPU的百分比
STIME //進程啟動到現在的時間
TTY //該進程在那個終端上運行,若與終端無關,則顯示? 若為pts/0等,則表示由網絡連接主機進程
CMD //命令的名稱和參數
%CPU //進程占用的CPU百分比
%MEM //占用內存的百分比
VSZ //該進程使用的虛擬內存量(KB)
RSS //該進程占用的固定內存量(KB)(駐留中頁的數量)
STAT //進程的狀態
START //該進程被觸發啟動時間
TIME //該進程實際使用CPU運行的時間
PRI //優先級
NI //nice值
PSR //進程運行所處的CPU
pstree:顯示當前系統上的進程樹
pgrep:獲取進程ID
[[email protected] 2]# pgrep -u root bash
9339
pidof:根據進程名稱查找其相關進程的ID號
[[email protected] 2]# pidof bash
9339 767
top:
M: 根據駐留內存大小進行排序
P:根據CPU使用百分比進行排序T: 根據累計時間進行排序
l: 是否顯示平均負載和啟動時間
t: 是否顯示進程和CPU狀態相關信息
m: 是否顯示內存相關信息
c: 是否顯示完整的命令行信息
q: 退出top
k: 終止某個進程
-d: 指定延遲時長,單位是秒
-b: 以批處理模式,以翻屏模式進行
-n #:在批模式下,共顯示多少屏
free:查看當前系統內存的使用情況,它顯示系統中剩余及已用的物理內存和交換內存,以及共享內存和被核心使用的緩沖區。
vmstat:系統狀態查看命令
[[email protected] 2]# vmstat procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 3 0 0 3055292 976 528100 0 0 7 1 28 49 0 0 100 0 0
四、調整nice值
調整已經啟動的進程的nice值:renice NI PID
在啟動時指定nice值:nice -n NI COMMAND
五、前臺和後臺
前臺作業:占據了命令提示符
後臺作業:啟動之後,釋放命令提示符,後續的操作在後臺完成
前臺-->後臺:
Ctrl+z: 把正在前臺的作業送往後臺,加送一個停止信號,作業在後臺停止運行
COMMAND &:讓命令在後臺執行
bg: 讓後臺的停止作業繼續運行
bg [[%]JOBID]
jobs: 查看後臺的所有作業
作業號,不同於進程號
+:命令將默認操作的作業
-:命令將第二個默認操作的作業
fg: 將後臺的作業調回前臺
fg [[%]JOBID]
kill %JOBID:終止某作業
進程管理學習筆記