Linux進(jìn)程和計(jì)劃任務(wù)管理
一、程序和進(jìn)程的關(guān)系
程序
保存在硬盤、光盤等個(gè)質(zhì)中的可執(zhí)行代碼和數(shù)據(jù)
文件中靜態(tài)保存的代碼
進(jìn)程
在CPU及內(nèi)存中運(yùn)行的程序代碼
動(dòng)態(tài)執(zhí)行的代碼
父、子進(jìn)程 init是所有進(jìn)程的父進(jìn)程
每個(gè)程序可以創(chuàng)建一個(gè)或多個(gè)進(jìn)程
二、查看進(jìn)程信息ps
ps命令-----查看靜態(tài)的進(jìn)程統(tǒng)計(jì)信息
方法一:
ps aux
a: 顯示終端上的所有進(jìn)程,包括其它用戶的進(jìn)程。
u: 表示列出進(jìn)程的用戶。
x: 顯示所有終端的進(jìn)程。
各列的解釋:
USER: 進(jìn)程的用戶。
PID: 進(jìn)程的ID。
%CPU: 進(jìn)程占用的CPU百分比。
%MEM: 占用內(nèi)存的百分比。
VSZ: 該進(jìn)程使用的虛擬內(nèi)存量 (KB)。
RSS: 該進(jìn)程占用的物理內(nèi)存量 (KB)
TTY: 啟動(dòng)進(jìn)程的終端名。不是從終端啟動(dòng)的進(jìn)程則顯示為 ?
STAT: 該進(jìn)程的狀態(tài) (D: 不可中斷的休眠狀態(tài); R: 正在運(yùn)行狀態(tài); s: 處于休眠狀態(tài),可被喚醒;T: 停止?fàn)顟B(tài),可能是在后臺(tái)暫?;蜻M(jìn)程處于跟蹤調(diào)試狀態(tài); Z: 僵尸進(jìn)程,進(jìn)程已經(jīng)中止,但是部分程序還在內(nèi)存當(dāng)中)
START: 該進(jìn)程被觸發(fā)啟動(dòng)時(shí)間。
TIME: 該進(jìn)程實(shí)際使用CPU運(yùn)行的時(shí)間。
COMMAND: 進(jìn)程的啟動(dòng)命令。
方法二:
ps -elf
-e: 顯示系統(tǒng)內(nèi)的所有進(jìn)程信息。
-l: 使用長(zhǎng)格式顯示進(jìn)程信息。
-f: 使用完整的格式顯示進(jìn)程信息。
-a: 顯示所有進(jìn)程pid。
-T: 查看線程信息。
ps -aT 顯示所有線程
各列的解釋:
F: 內(nèi)核分配給進(jìn)程的系統(tǒng)標(biāo)記。
S: 進(jìn)程的狀態(tài)。
UID: 啟動(dòng)這些進(jìn)程的用戶。
PID: 進(jìn)程的進(jìn)程ID。
PPID: 父進(jìn)程的進(jìn)程號(hào) (如果該進(jìn)程是由另一個(gè)進(jìn)程啟動(dòng)的)。
C: 進(jìn)程生命周期中的CPU利用率。
PRI: 進(jìn)程的優(yōu)先級(jí) (越大的數(shù)字代表越低的優(yōu)先級(jí))。
NI: 謙讓度值用來參與決定優(yōu)先級(jí)。
ADDR: 進(jìn)程的內(nèi)存地址。
SZ: 假如進(jìn)程被換出,所需交換空間的大致大小。
WCHAN: 若該進(jìn)程在睡眠,則顯示睡眠中的系統(tǒng)函數(shù)名。
STIME: 進(jìn)程啟動(dòng)時(shí)的系統(tǒng)時(shí)間。
TTY: 進(jìn)程啟動(dòng)時(shí)的終端設(shè)備。
TIME: 運(yùn)行進(jìn)程需要的累計(jì)CPU時(shí)間。
CMD: 進(jìn)程的啟動(dòng)命令。
什么是僵尸進(jìn)程
一個(gè)進(jìn)程結(jié)束了,但是如果該進(jìn)程的父進(jìn)程已經(jīng)先結(jié)束了,那么該進(jìn)程就不會(huì)變成僵尸進(jìn)程,因?yàn)槊總€(gè)進(jìn)程結(jié)束的時(shí)候,系統(tǒng)都會(huì)掃描當(dāng)前系統(tǒng)中所運(yùn)行的所有進(jìn)程,看有沒有哪個(gè)進(jìn)程是剛剛結(jié)束的這個(gè)進(jìn)程的子進(jìn)程,如果是的話,就由Init來接管它,成為它的父進(jìn)程,子進(jìn)程退出后init會(huì)回收其占用的相關(guān)資源。
但是當(dāng)子進(jìn)程比父進(jìn)程先結(jié)束,而父進(jìn)程又沒有回收子進(jìn)程,釋放子進(jìn)程占用的資源,此時(shí)子進(jìn)程將成為一個(gè)僵尸進(jìn)程。
三、查看進(jìn)程信息top
top命令-----查看動(dòng)態(tài)的進(jìn)程排名信息
第一行是 任務(wù)隊(duì)列信息
11:32:54 : 系統(tǒng)時(shí)間
up 27 min : 系統(tǒng)已運(yùn)行時(shí)長(zhǎng)
2 user : 當(dāng)前登錄用戶數(shù)
load average: 0.00, 0.01, 0.05 :系統(tǒng)負(fù)載,即單位時(shí)間內(nèi)系統(tǒng)處理的任務(wù)數(shù),后面三個(gè)數(shù)值分別為1分鐘、5分鐘、15分鐘前到現(xiàn)在的平均值
第二行為 進(jìn)程信息
Tasks : 總進(jìn)程數(shù)
running : 正在運(yùn)行的進(jìn)程數(shù)
sleeping : 休眠的進(jìn)程數(shù)
stopped : 中止的進(jìn)程數(shù)
zombie :僵死的進(jìn)程數(shù)
第三行為 CPU的信息
us :用戶占用
sy :內(nèi)核占用
ni :優(yōu)先級(jí)調(diào)度占用
id : 空閑CPU,要了解空閑的 CPU 百分比,主要看%id部分
wa : I/O等待占用
hi : 硬件中斷占用
si : 軟件中斷占用
st : 虛擬化占用
第四行為內(nèi)存的信息
total : 總內(nèi)存空間
free : 空閑內(nèi)存
used : 已用內(nèi)存
buff/cache :物理內(nèi)存和交換內(nèi)存的緩沖區(qū)總和
第五行為交換空間的信息
total :總交換空間
free : 空閑交換空間
used :已用交換空間
avail Mem : 可用物理空間
進(jìn)程信息區(qū)各列解釋:
PID :進(jìn)程id
USER : 進(jìn)程所有者的用戶名
PR : 優(yōu)先級(jí)
NI :謙讓度值。負(fù)值表示高優(yōu)先級(jí),正值表示低優(yōu)先級(jí)
VIRT :進(jìn)程使用的虛擬內(nèi)存總量,單位kb
RES : 進(jìn)程使用的物理內(nèi)存大小,單位kb
SHR :共享內(nèi)存大小,單位kb
S : 進(jìn)程狀態(tài)
%CPU : 上次更新到現(xiàn)在的CPU時(shí)間占用百分比
%MEM : 進(jìn)程使用的物理內(nèi)存百分比
TIME+ : 進(jìn)程使用的CPU時(shí)間總計(jì),單位1/100秒
COMMAND : 命令名/命令行
top常用命令:
P 鍵: 根據(jù)CPU使用百分比大小進(jìn)行排序
M 鍵: 根據(jù)駐留內(nèi)存大小進(jìn)行排序
N 鍵: 根據(jù)啟動(dòng)時(shí)間進(jìn)行排序
c 鍵: 切換顯示命令名稱和完整命令行
h 鍵: 可以獲得 top程序的在線幫助信息
k 鍵: 根據(jù)提示輸入指定進(jìn)程的 PID 號(hào)并按 Enter 鍵終止對(duì)應(yīng)的進(jìn)程
q 鍵: 退出top程序
數(shù)字1鍵: 顯示CPU個(gè)數(shù)和狀態(tài)
top -H: 顯示所有線程
top -H -p < pid>: 顯示特定進(jìn)程中的線程
圖示為W 、uptime以及top這三種命令都可以用來查看cpu的負(fù)載情況
四、查看進(jìn)程信息pgrep
pgrep命令-----根據(jù)特定條件查詢進(jìn)程PID信息
-l: 顯示進(jìn)程名 缺省時(shí)只輸出 PID 號(hào)
-U:指定特定用戶
-t: 指定終端
五、查看進(jìn)程樹pstree
pstree命令-----以樹形結(jié)構(gòu)列出進(jìn)程信息
-a: 顯示完整信息
-u: 列出對(duì)應(yīng)用戶名
-p: 列出對(duì)應(yīng)PID號(hào)
進(jìn)程的啟動(dòng)方式
手工啟動(dòng)
前臺(tái)啟動(dòng): 用戶輸入命令,直接執(zhí)行程序
后臺(tái)啟動(dòng): 在命令 行尾 加入“&”符號(hào)
[root@localhost ~]# cp/dev/cdrom mycd.iso&
[1] 28454 (輸出信息中包括后臺(tái)任務(wù)序號(hào)、PID號(hào))
調(diào)度啟動(dòng)
使用at命令,設(shè)置一次性計(jì)劃任務(wù)
使用crontab命令,設(shè)置周期性計(jì)劃任務(wù)
六、進(jìn)程的前后臺(tái)調(diào)度
Ctrl+Z組合鍵
將當(dāng)前進(jìn)程掛起,即調(diào)入后臺(tái)并停止執(zhí)行
jobs命令
jobs [-l]
查看處于后臺(tái)的任務(wù)列表
fg命令
將后臺(tái)進(jìn)程恢復(fù)到前臺(tái)運(yùn)行,可指定任務(wù)序號(hào)
七、終止進(jìn)程的運(yùn)行
CtrI+C組合鍵
中斷正在執(zhí)行的命令
kill、killall命令
kil用于終止 指定PID號(hào) 的進(jìn)程
kilall用于終止 指定名稱相關(guān)的所有 進(jìn)程
-9選項(xiàng)用于強(qiáng)制終止
pkill命令 (用得不多)
根據(jù)特定條件終止相應(yīng)的進(jìn)程
常用命令選項(xiàng)
-U: 根據(jù)進(jìn)程所屬的用戶名終止相應(yīng)進(jìn)程
-t: 根據(jù)進(jìn)程所在的終端終止相應(yīng)進(jìn)程
八、計(jì)劃任務(wù)管理at
at命令
一次性計(jì)劃任務(wù)
at [HH:MM] [yyyy-mm-dd] 后面跟上年月日,不跟默認(rèn)當(dāng)天
按CtrI+D鍵提交任務(wù)
atq 查看未執(zhí)行的任務(wù)列表
atrm 刪除任務(wù)
九、crontab命令
按照預(yù)先設(shè)置的時(shí)間周期(分鐘、小時(shí)、天、月、周)重復(fù)執(zhí)行用戶指定的命令操作
屬于周期性計(jì)劃任務(wù)
主要設(shè)置文件
全局配置文件,位于文件: /etc/crontab
系統(tǒng)默認(rèn)的設(shè)置,位于目錄: /etc/cron.*/
用戶定義的設(shè)置,位于文件: /var/spool/cron/用戶名
管理crontab計(jì)劃任務(wù)
編輯計(jì)劃任務(wù)
crontab -e [-u 用戶名] -u缺省時(shí)默認(rèn)是針對(duì)當(dāng)前用戶
查看計(jì)劃任務(wù)
crontab -l [-u 用戶名]
刪除計(jì)劃任務(wù)
crontab -r [-u 用戶名]
crontab任務(wù)配置的格式
字段 | 取值范圍說明 |
---|---|
分鐘 | 取值為從0到59之間的任意整數(shù) |
小時(shí) | 取值從0到23之間的任意整數(shù) |
日期 | 取值為從1到31之間的任意整數(shù) |
月份 | 取值為從1到12之間的任意整數(shù) |
星期 | 取值為從0到7之間的任意整數(shù),0和7都是星期天 |
命令 | 要執(zhí)行的命令或程序腳本 |
時(shí)間數(shù)值的特殊表示方法
● 表示該范圍內(nèi)的任意時(shí)間
●, 表示間隔的多個(gè)不連續(xù)時(shí)間點(diǎn)
●- 表示一個(gè)連續(xù)的時(shí)間范圍
●/ 指定間隔的時(shí)間頻率
應(yīng)用示例
0 17 1-5 : 周一到周五每天17:00
30 8 1,3,5 : 每周一、三、五的8點(diǎn)30分
0 8-18/2 : 8點(diǎn)到18點(diǎn)之間每2小時(shí)
0 /3 : 每3天
本文摘自 :https://blog.51cto.com/u