1、什么是進(jìn)程?
進(jìn)程:可并發(fā)執(zhí)行的程序在一定數(shù)據(jù)集合上的運(yùn)行過程。進(jìn)程即是資源分配的基本單位,也是調(diào)度和分派的基本單位。
2、UNIX操作系統(tǒng)進(jìn)程調(diào)度算法:
多級(jí)反饋調(diào)度隊(duì)列算法。
3、進(jìn)程狀態(tài):創(chuàng)建、初始、就緒(活動(dòng)、靜止)、執(zhí)行、阻塞(活動(dòng)、靜止)、結(jié)束。
4、進(jìn)程監(jiān)控命令:
ps 命令和進(jìn)程工具/usr/proc/bin下的工具級(jí)。
可以將ps和grep命令組合使用來搜索特定的信息。
5、/usr/proc/bin的命令介紹:
pstop 停止進(jìn)程
prun pid 重新啟動(dòng)進(jìn)程
ptime pid 使用微狀態(tài)計(jì)算進(jìn)程時(shí)間
pwait pid 等待指定的進(jìn)程終止.
pcred pid 顯示可信度
pfiles pid 顯示已打開文件的fstat 和fcntl 信息
pflags pid 顯示每個(gè)lwp 的/proc 跟蹤標(biāo)志,等待和持有信號(hào)量以及其他狀
態(tài)信息
pldd pid 顯示鏈接到每個(gè)進(jìn)程的動(dòng)態(tài)鏈接庫
pmap pid 顯示地址映射空間
psig pid 顯示信號(hào)操作
pstack pid 顯示每個(gè)lwp 的十六進(jìn)制與符號(hào)堆跟蹤
ptree pid 顯示包含指定PID 的進(jìn)程樹
pwdx oid 顯示當(dāng)前工作目錄
6、ps命令格式:
ps [ -aAdeflcjLPy ] [ -o format ] [ -t termlist ] [ -u userlist ] [ -U userlist ] [ -G grouplist ] [ -p proclist ] [ -g pgrplist ] [ -s sidlist ]
7、常用的參數(shù):
-e 輸出所有進(jìn)程報(bào)告
-f 在第一欄顯示進(jìn)程所有者的名字(不是UID)。該選項(xiàng)關(guān)閉-l、–t、–s 和–r 選項(xiàng),打開-a 選項(xiàng)。
-l 產(chǎn)生一個(gè)長(zhǎng)的輸出報(bào)告,只是不包含STIME 字段
8、ps -el的相關(guān)輸出參數(shù)解釋:
bash-2.05$ ps -el
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
19 T 0 0 0 0 0 SY ? 0 ? 0:16 sched
8 S 0 1 0 0 40 20 ? 151 ? ? 0:00 init
19 S 0 2 0 0 0 SY ? 0 ? ? 0:00 pageout
19 S 0 3 0 0 0 SY ? 0 ? ? 0:30 fsflush
8 S 0 377 1 0 40 20 ? 223 ? ? 0:00 sac
8 S 0 378 1 0 40 20 ? 224 ? console 0:00 ttymon
8 S 0 131 1 0 40 20 ? 289 ? ? 0:00 rpcbind
F 十六進(jìn)制標(biāo)志,它們加起來表示進(jìn)程的當(dāng)前狀態(tài)。如下所述:
00 進(jìn)程終止,而且它們?cè)谶M(jìn)程表中的空間已釋放。
01 系統(tǒng)進(jìn)程,長(zhǎng)駐內(nèi)存
02 進(jìn)程被父進(jìn)程跟蹤
04 進(jìn)程被父進(jìn)程跟蹤而且已被停止
08 該進(jìn)程無法被信號(hào)量喚醒
10 該進(jìn)程當(dāng)前在內(nèi)存中,而且被鎖定直到一個(gè)事件完成
20 進(jìn)程不能被交換出
S 進(jìn)程當(dāng)前狀態(tài),由以下字母之一顯示:
O 當(dāng)前正在處理器上運(yùn)行
S 睡眠;等待I/O事件完成
R 運(yùn)行結(jié)束
I 空閑;進(jìn)程被創(chuàng)建
Z 僵死。進(jìn)程已終止
T 由于父進(jìn)程跟蹤而停止
X 等待更多的內(nèi)存
UID 進(jìn)程所有者的用戶ID
PID 進(jìn)程ID
PPID 父進(jìn)程ID
C 進(jìn)程的CPU使用情況(即進(jìn)程占CPU時(shí)間的百分比)
PRI 進(jìn)程優(yōu)先權(quán)方案。較大的數(shù)表示較低的優(yōu)先權(quán)
NI 進(jìn)程的nice值,該值與優(yōu)先權(quán)方案相關(guān)聯(lián)。使一個(gè)進(jìn)程“nicer”意指降低該進(jìn)程的優(yōu)先權(quán),以使它不會(huì)用盡CPU的時(shí)間
SZ 進(jìn)程請(qǐng)求的虛擬內(nèi)存量。這是該系統(tǒng)對(duì)內(nèi)存需求的一個(gè)好的指標(biāo)。
TTY 啟動(dòng)進(jìn)程(或者父進(jìn)程)的終端。帶問號(hào)的進(jìn)程無控制終端(通常為系統(tǒng)進(jìn)程)
TIME 自進(jìn)程啟動(dòng)以來占CPU時(shí)間總量
COMD 產(chǎn)生進(jìn)程的命令
9、使用ps報(bào)告。
查找屬于一個(gè)用戶的許多相同的工作。Kill命令終止進(jìn)程。 ps -U username
查找TIME字段中占用了很多CPU時(shí)間的進(jìn)程。這樣的進(jìn)程可能在死循環(huán)。ps -e
查找C字段,找出不重要但占用了大量CPU時(shí)間的進(jìn)程。如果該進(jìn)程獲取過多內(nèi)存,刪除該進(jìn)程。如果許多進(jìn)程占用了大量?jī)?nèi)存,則系統(tǒng)可能需要增加內(nèi)存。ps -el
注意使用越來越多CPU時(shí)間的失控進(jìn)程。可以通過使用-f選項(xiàng)查看進(jìn)程啟動(dòng)時(shí)間(STIME)以及通過查看TIME字段中的CPU時(shí)間總量來檢測(cè)失控進(jìn)程。 ps -f
10、刪除進(jìn)程。
在正常途徑無法結(jié)束時(shí)才使用刪除命令。
#kill - signal pid
signal:57
signal:
2 中斷
3 退出
4 非法指令
5 跟蹤中斷
6 Abort
7 EMT指令(Emulation競(jìng)爭(zhēng)trap)
8 浮點(diǎn)格式的異常情況
9 kill(不能被捕獲或忽略)
10 通道錯(cuò)誤
11不合法的內(nèi)存區(qū)段
12 錯(cuò)誤系統(tǒng)調(diào)用
13 寫入不可讀的連通管道
14 alarm clock
15 軟件結(jié)束信號(hào)
16 用戶定義的信號(hào)1
17用戶定義的信號(hào)2
18 子進(jìn)程狀態(tài)被改變
19 電源壞掉
20窗口(Window)的大小被改變
21Urgent(緊急的) Socket Condition
22 Pollable(可查詢的)event
23 停止
24 由用戶終止
25 繼續(xù)執(zhí)行
26 停止終端輸入
27 停止終端輸出
28 virtual Timer expired
29 Profiling time expired
30 超過CPU時(shí)間
31 超過文件大小限制
32 Socket I/O possible
有時(shí)即使用kill命令,但進(jìn)程仍未被刪除。最有可能的三種情況:
進(jìn)程在退出前等待設(shè)備完成操作。
進(jìn)程在等待由于NFS故障而導(dǎo)致的無法使用的資源。要?jiǎng)h除此類進(jìn)程,輸入kill -quit PID
進(jìn)程為僵死進(jìn)程,在ps報(bào)告的defunct的消息中顯示。僵死進(jìn)程是釋放了所有資源,但未接受到父進(jìn)程確認(rèn)的進(jìn)程。只有收到確認(rèn)才刪除進(jìn)程在進(jìn)程表中的入口。下一次引導(dǎo)時(shí)僵死進(jìn)程會(huì)被清除。僵死進(jìn)程不影響系統(tǒng)性能,不需要?jiǎng)h除。
11、優(yōu)先權(quán)控制命
使用priocntl命令可以:
顯示或設(shè)置指定進(jìn)程的調(diào)度參
顯示系統(tǒng)調(diào)度程序的當(dāng)前配置信息
執(zhí)行帶有指定調(diào)度參數(shù)的命令
每個(gè)進(jìn)程都有不同的級(jí),每級(jí)分配有各自不同的調(diào)度策略。
系統(tǒng)可能配置的級(jí)包括:
系統(tǒng)(SYS)
交互(IA)
實(shí)時(shí)(RT)
分式共享(TS)
對(duì)于分式共享級(jí),用戶提供的優(yōu)先權(quán)范圍為:-20~+20。一個(gè)
分時(shí)共享進(jìn)程的優(yōu)先權(quán)(用戶模式優(yōu)先權(quán))是從父進(jìn)程繼承
而來。系統(tǒng)在分時(shí)調(diào)度表中查找用戶模式優(yōu)先權(quán),加入任何
nice值或這者priocntl優(yōu)先權(quán)值(用戶提供),保證創(chuàng)建的全
局優(yōu)先權(quán)在0~59之間。
在默認(rèn)配置中,一個(gè)可運(yùn)行的實(shí)時(shí)進(jìn)程在任何其它進(jìn)程之前運(yùn)行。實(shí)時(shí)進(jìn)程使用不當(dāng)會(huì)導(dǎo)致系統(tǒng)性能急劇下降。
1. 顯示進(jìn)程級(jí)的基本信息(進(jìn)程級(jí)或系統(tǒng)調(diào)度參數(shù)):
輸入priocntl -l并回車
2. 顯示進(jìn)程的全局優(yōu)先級(jí)
使用ps -ecl命令顯示進(jìn)程的全局優(yōu)先權(quán)。全局優(yōu)先權(quán)在PRI欄列出
3、指定進(jìn)程的優(yōu)先級(jí):
輸入priocntl -e -c class -m user -limit -p priority command - name回車
-e 執(zhí)行命令
-c 指定級(jí)(默認(rèn)選項(xiàng)是TS(分時(shí)共享)或RI(實(shí)時(shí))
-m 用戶限制選項(xiàng),指定-p選項(xiàng)提升或降低優(yōu)先權(quán)的最大量。
-p 允許指定用戶提供的優(yōu)先權(quán),范圍為-20~+20。
4.更改分時(shí)共享進(jìn)程的調(diào)度參數(shù)
依照以下步驟更改分時(shí)共享進(jìn)程的調(diào)度參數(shù):
1)成為超級(jí)用戶。
2)輸入priocntl -s -m user -limit [-p priority] -i id type id -list回車。
-s允許設(shè)置用戶優(yōu)先權(quán)范圍的上限
-m 用戶限制選項(xiàng),指定-p選項(xiàng)提升或降低優(yōu)先權(quán)的最大量。
-p優(yōu)先權(quán)命令名選項(xiàng),允許指定優(yōu)先權(quán)。
-I id -type和id -list選項(xiàng)使用id -type和id -list的組合標(biāo)識(shí)進(jìn)程, id -
type指定id類型,如PID或UID。
3)輸入ps -ecl|grep id -list回車。
4)檢查PRI欄的輸出,驗(yàn)證已經(jīng)成功地更改了進(jìn)程狀態(tài)。
% priocntl -s -c RT -t 500 -p 20 myprog
% ps -ecl|grep myprog
5. 更改進(jìn)程
依照以下步驟更改進(jìn)程級(jí):
1)成為超級(jí)用戶。
2)輸入priocntl -s -c class -i id type id -list回車。
-s允許設(shè)置用戶優(yōu)先權(quán)范圍的上限并更改優(yōu)先權(quán)
-c 指定想更改的進(jìn)程級(jí)為TS(分時(shí)共享)級(jí)或RI(實(shí)時(shí))級(jí)
-I id -type和id -list選項(xiàng)使用id -type和id -list的組合標(biāo)識(shí)進(jìn)程, id -type指定id
類型,如PID或UID。
3)輸入ps -ecl|grep id -list回車。
4)檢查PRI欄的輸出,驗(yàn)證已經(jīng)成功地更改了進(jìn)程狀態(tài)。
注意:必須是超級(jí)用戶或者在實(shí)時(shí)shell中操作,更改進(jìn)程級(jí)為非實(shí)時(shí)級(jí)或者實(shí)時(shí)級(jí)。
6、更改進(jìn)程優(yōu)先級(jí)
使用nice命令可以提高或降低一個(gè)命令或進(jìn)程的優(yōu)先權(quán)。
不帶參數(shù)使用該命令則默認(rèn)nice值增4個(gè)單位,使進(jìn)程優(yōu)先
權(quán)降低。
注意:必須是超級(jí)用戶才能。
/usr/bin/nice command -name(默認(rèn),進(jìn)程的優(yōu)先權(quán)降低4個(gè)單位)
/usr/bin/nice +10 command -name(進(jìn)程的優(yōu)先權(quán)降低10個(gè)單位)
/usr/bin/nice -10 command -name(進(jìn)程的優(yōu)先權(quán)增加10個(gè)單位)
/usr/bin/nice - -10 command -name(nice 值減少10個(gè)單位,提高一個(gè)命令的優(yōu)先權(quán))