1.什么是進程
比如: 開發(fā)寫的代碼我們稱為程序磁奖,那么將開發(fā)的代碼運行起來偏窝。我們稱為進程。
總結(jié)一句話就是: 當我們運行一個程序帖族,那么我們將運行的程序叫進程。
PS1: 當程序運行為進程后挡爵,系統(tǒng)會為該進程分配內(nèi)存竖般,以及進程運行的身份和權(quán)限。
PS2: 在進程運行的過程中茶鹃,系統(tǒng)會有各種指標來表示當前運行的狀態(tài)涣雕。
2.程序和進程的區(qū)別
1.程序是數(shù)據(jù)和指令的集合,是一個靜態(tài)的概念闭翩。比如/bin/ls挣郭、/bin/cp等二進制文件。同時程序可以長期存在系統(tǒng)中疗韵。
2.進程是程序運行的過程兑障,是一個動態(tài)的概念。進程是存在生命周期的概念的蕉汪,也就是說進程會隨著程序的終止而銷毀流译,不會永久存在系統(tǒng)中。
3.進程的生命周期
生命周期就是指一個對象的生老病死者疤。用處很廣福澡。
當父進程接收到任務調(diào)度時,會通過fock派子進程來處理宛渐,那么子進程會繼承父進程屬性竞漾。
1.子進程在處理任務代碼時,父進程會進入等待狀態(tài)中...
2.子進程在處理任務代碼后窥翩,會執(zhí)行退出(exit)业岁,然后喚醒父進程來回收子進程的資源。
3.如果子進程在處理任務過程中寇蚊,父進程退出了笔时,子進程沒有退出,那么這些子進程就沒有父進程來管理了仗岸,就變成僵尸進程允耿。
PS: 每個進程的父進程為PPID,子進程則叫PID扒怖。
3.監(jiān)控進程狀態(tài)
程序在運行后较锡,我們需要了解進程的運行狀態(tài)。查看進程的狀態(tài)分為: 靜態(tài)和動態(tài)兩種方式
1.使用 ps 命令查看當前的進程狀態(tài)(靜態(tài))
1)示例盗痒、ps -aux常用組合蚂蕴,查看進程 用戶、PID、占用cpu百分比骡楼、占用內(nèi)存百分比熔号、狀態(tài)、執(zhí)行的命令等
[root@localhost ~]# ps aux
USER? PID? %CPU? %MEM? VSZ? ? ?RSS? TTY? ? STAT? START? TIME? ?COMMAND
root? ? ? 1? ? ? 0.0? ? ? ? 0.6? ? ? 128292? 6920? ? ?? ? ? ? Ss? ? ? 01:24? ? 0:02? ? /usr/lib/systemd/systemd --switc
root? ? ? ?2? ? ?0.0? ? ? ? 0.0? ? ? ? 0? ? ? ? ? ? 0? ? ? ? ?? ? ? ? S? ? ? ? 01:24? ? 0:00? ? [kthreadd]
狀態(tài)? ? ? ? ? ? ?描述
USER? ? ? ? ? ?運行進程的用戶
PID? ? ? ? ? ? ? ?進程運行的ID號
%CPU? ? ? ? ? 進程占用CPU百分比
%MEM? ? ? ? ?進程占用內(nèi)存百分比
VSZ? ? ? ? ? ? ? 進程占用虛擬內(nèi)存大小 (單位KB)
RSS? ? ? ? ? ? ? 進程占用實際物理內(nèi)存大小 (單位KB)
TTY? ? ? ? ? ? ? ?進程是由哪個終端運行啟動的tty1鸟整、pts/0等? ? 表示內(nèi)核程序與終端無關
STAT? ? ? ? ? ? ?進程運行過程中的狀態(tài) man ps (/STATE)
START? ? ? ? ? ?啟動進程時的時間
TIME? ? ? ? ? ? ? 進程占用 CPU 的總時間(為0表示還沒超過秒)
COMMAND? ? 程序的運行指令引镊,[ 方括號 ] 屬于內(nèi)核態(tài)的進程。 沒有 [ ] 的是用戶態(tài)進程篮条。
2.STAT狀態(tài)的S弟头、Ss、S+兑燥、R亮瓷、R琴拧、S+等等降瞳,都是什么意思?
STAT基本狀態(tài)? ? 描述? ? ? ? ? ? ? ?STAT狀態(tài)+符號? ? ? ? ? 描述
R? ? ? ? ? ? ? ? ? ? ? ?進程運行? ? ? ? ? ? ? s? ? ? ? ? ? ? ? ? ? ? ? ? ? ?進程是控制進程, Ss進程的領導者蚓胸,父進程
S? ? ? ? ? ? ? ? ? ? ? ?可中斷睡眠? ? ? ? ? <? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 進程運行在高優(yōu)先級上挣饥,S<優(yōu)先級較高的進程
T? ? ? ? ? ? ? ? ? ? ? ?進程被暫停? ? ? ? ? N? ? ? ? ? ? ? ? ? ? ? ? ? ? ?進程運行在低優(yōu)先級上,SN優(yōu)先級較低的進程
D? ? ? ? ? ? ? ? ? ? ? ?不可中斷睡眠? ? ? +? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 當前進程運行在前臺沛膳,R+表示該進程在前臺運行
Z? ? ? ? ? ? ? ? ? ? ? ? 僵尸進程? ? ? ? ? ? ?l? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?進程是多線程的扔枫,Sl表示進程是以線程方式運行
2.使用 top 命令查看當前的進程狀態(tài)(動態(tài))
任務? ? ? ? ? ? ? ? ? ? ? ? ? 含義
Tasks: 129 total? ? ? ? 當然進程的總數(shù)
1 running? ? ? ? ? ? ? ? ? 正在運行的進程數(shù)
128 sleeping? ? ? ? ? ? ?睡眠的進程數(shù)
0 stopped? ? ? ? ? ? ? ? ?停止的進程數(shù)
0 zombie? ? ? ? ? ? ? ? ? ?僵尸進程數(shù)
%Cpu(s): 0.7 us? ? ? ?系統(tǒng)用戶進程使用CPU百分比
0.7 sy? ? ? ? ? ? ? ? ? ? ? ?內(nèi)核中的進程占用CPU百分比,通常內(nèi)核是與硬件進行交互
0.0 ni? ? ? ? ? ? ? ? ? ? ? ? 優(yōu)先級的進程占用cpu的百分比
98.7 id? ? ? ? ? ? ? ? ? ? ? 空閑CPU的百分比
0.0 waCPU? ? ? ? ? ? ? 等待IO完成的時間
0.0 hi? ? ? ? ? ? ? ? ? ? ? ?硬中斷锹安,占的CPU百分比
0.0 si? ? ? ? ? ? ? ? ? ? ? ?軟中斷短荐,占的CPU百分比
0.0 st? ? ? ? ? ? ? ? ? ? ? ?比如虛擬機占用物理CPU的時間
top 常見指令
字母? ? ? ? ? ? ? ? ? ? ?含義
h? ? ? ? ? ? ? ? ? ? ? ? ? 查看幫出
1? ? ? ? ? ? ? ? ? ? ? ? ? 數(shù)字1,顯示所有CPU核心的負載
z? ? ? ? ? ? ? ? ? ? ? ? ? 以高亮顯示數(shù)據(jù)
b? ? ? ? ? ? ? ? ? ? ? ? ? 高亮顯示處于R狀態(tài)的進程
M? ? ? ? ? ? ? ? ? ? ? ? ?按內(nèi)存使用百分比排序輸出
P? ? ? ? ? ? ? ? ? ? ? ? ? 按CPU使用百分比排序輸出
q? ? ? ? ? ? ? ? ? ? ? ? ? ?退出top