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