詳解Linux進程及作業管理
一、進程查看及其管理工具
ps命令:報告當前進程的快照信息
- ps - report a snapshot of the current processes.
選項:
-A:顯示所有進程與-e相同的效果
-a:不與終端相關的所有進程
-u:與用戶相關的進程
-x:通常和a,u結合使用,顯示出來比較全面的信息
-f:做一個更為完整的輸出
常用的組合:
ps -ef 以完整的信息顯示所有進程信息
ps -efH 顯示進程層次結構
ps -aux 顯示所有不與終端和與終端相關的進程完整信息
ps -axo pid,command,psr,pri,ni 自定義顯示其進程號、進程命令、優先級、nice值
命令演示:
UID/PID/PPID:表示發起者、進程號、父進程號
C:代表CPU,單位為百分比
STIME:表示進程啟動時間
TTY:登錄者的終端位置
TIME:cpu的運行時間
CMD:處罰進程命令
命令演示:
USER:進程的發起者 PID:進程號 %CPU:cpu的占用率
%MEM:內存的占用率 VSZ:虛擬內存集 RSS:物理內存集
TTY:終端位置 STAT:進程狀態信息 START:被觸發的時間
TIME:cpu的使用時間 COMMAND:觸發進程命令
………………………………………………………………………………………………………………………
注:STAT的常見狀態:
R:running,運行狀態
S:interruptible sleeping,可終端休眠
D:uninterruptible sleeping,不可終端休眠
T:stop,停止狀態
Z:zombie,僵持狀態
top命令:
top - display Linux tasks:動態顯示linux進程信息
- top - 17:24:30 up 2 days, 9:45, 3 users, load average: 0.00, 0.01, 0.05
top 當前系統時間 系統啟動到現在時間總長 用戶數 平均負載
- Tasks: 364 total, 2 running, 361 sleeping, 1 stopped, 0 zombie
顯示進程總量與個別程序處在什么樣的狀態:運行 可中斷 不可中斷 僵持狀態、僵死狀態
- %Cpu(s): 0.3 us, 0.7 sy, 0.0 ni, 99.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
………………………………………………………………………………………………………………………
顯示CPU的整體負載,具體如下:
us:user space 用于使用空間
sy:system space 內核占用cpu百分比
ni:nice用戶進程空間所改變過優先級的進程占用cpu的百分比
id:idle空閑cpu百分比
wa:wait i/0 等待i/o花費時間
hi:hardware interrupt
si:software interrupt
st:stolen,被虛擬內存偷走的百分比
KiB Mem : 1001332 total, 139212 free, 207732 used, 654388 buff/cache
物理內存占用使用情況
KiB Swap: 2098172 total, 2097620 free, 552 used. 531424 avail Mem
交換分區的使用情況
上面一行通常為空,只要在輸入命令時才顯示,在這可輸入的命令有如下:
P:以占據的cpu的百分比大小進程排序
M:以占據的memory大小進行排序
T:以cpu的運行時長進行排序
l:顯示系統負載行
t:是否顯示系統進程摘要信息及其cpu的負載狀態
1:平均或單獨顯示cpu的負載狀態
m:是否顯示內存相關的狀態信息
q:退出命令
s:修改延長刷新時間
k:終止指定進程
………………………………………………………………………………………………………………………
top字段詳解:
PID:進程號
USER:進程發起者
PR:進程的優先級,越小越優先
NI:nice值,與priortity有關,越小越早被運行
VIRT:虛擬內存集 進程占虛擬內存空間
RES:物理內存集 進程占實際內存空間
SHR:進程與其他進程共享的內存大小
S:進程的狀態信息
%CPU:cpu的使用百分比
%MEM:內存的使用百分比
TIME+:cpu的使用時間的總時長
COMMAND:進程相關命令
htop命令:內部進程查看器
- htop - interactive process viewer
u:顯示指定用戶的進程
l:顯示光標所在進程所打開的文件列表
s:顯示光標所在進程執行的系統調用
a:綁定進程到指定的cpu
#:快速定位光標之pid為#號的進程上
htop支持的選項:
-d:延長時長
-u USERNAME:僅顯示指定用戶的進程
-s COLUMN:根據指定的字段進行排序
二、Linux進程及作業管理
1、進程管理
所謂的進程管理就是向進程發送一些控制信號,來完成對進程的管理控制,可通過kill命令來顯示當前系統可用的信號,以及向進程發送信號指定。
kill -l:顯示當前系統可用的信號

kill命令:
用于向進程發送信號,以實現對進程的管理
- kill - terminate a process
每個信號的標識方式有三種:
1)信號的數字標識
2)信號的完整名稱
3)信號的簡寫名稱
向進程發信號:
kill [-s signal|-p] [--] pid...
kill -l [signal]
常見的信號有:
1)SIGHUB #無需關閉進程讓其重讀配置文件 kill -1 pid
2)SIGINT #終止正在運行的指令 相當于ctrl+c kill -2 pid
9)SIGKILL #強暴的殺死正在運行的進程 kill -9 pid
15)SIGNTERM#安全終止運行中的進程 kill -15 pid
19)SIGSTOP #停止進程
killall命令:killall命令后面接進程名
- killall - kill processes by name
2、作業管理
在每個用戶登錄系統之后每個工作進程都是當前bash的子進程,此時我們需要對那些進行管理,即將一部分作業放入后臺運行,,同時在前臺編輯一個配置文件,在編輯完配置文件后再將后臺的作業任務調回前臺運行。
如何將作業運行在后臺:
1)ctrl+z
2)command &
作業控制命令:fg bg kill
作業控制命令:
# fg [[%]JOBNUM]: 將指定的作業調回前臺
# bg [[%]JOBNUM]: 讓送往后臺的作業在后臺繼續運行
# kill[%JOBNUM]: 終止指定的作