程序管理
linux中,所有程序都是init程序的後代程序,init的程序号是1,也有程序号是0的程序
程序狀态
running 運作
ready(runnable) 就緒
sleep
interruptable 使用者随時可以喚醒 可打斷睡眠
uninterruptable 通常在等待I/O操作,非可打斷睡眠
stop 停止 不能被排程(無外力的情況下)
zombie 僵死 父程序處理後事
檢視程序資訊的指令
#pstree 檢視程序樹
#ps(process state) 快照目前與使用者相關的前台程序的資訊以顯示
VSZ 虛拟記憶體集
RSS 實體記憶體空間 在TOP中此項是RES
STAT S sleep 可中斷睡眠
R Running 運作
D 不可中斷的睡眠
T 停止态
Z 僵死态
< 高優先級的程序
s 發起會話的程序
N 低優先級的程序
l 多線程的程序 MultiThread
+ 前台程序
支援BSD的風格的指令(選項不帶-)
a 顯示主要與終端相關的程序
x 顯示主要與終端無關的程序
u 顯示與使用者相關的資訊
以上三個選項配合起來使用
#ps aux 顯示與使用者相關的所有程序
-e =ax 顯示所有程序資訊
-f 顯示程序詳細資訊
-ef 顯示所有程序的詳細資訊
-j 以作業方式顯示
-H 顯示程序森林
-ejH 以作業方式顯示詳細資訊和程序樹
-aujf 顯示程序樹
-o 顯示使用者指定字段
#ps axo pid,tty,cmd 顯示所有程序的程序号,終端,和程序名
#ps efo pid uid 顯示所有程序的詳細資訊中程序号和使用者ID
Attention
watch 周期性的顯示指令執行情況
-n 指定周期,機關秒
-n 1
-n .5 0.5s
watch -n .5 `指令`
pgrep (process grep)
-U 查找與某一使用者相關的程序
-G 查找與某一組相關的程序
-t 查找終端程序
-P 查找父程序為PPID的程序
pgrep pattern 顯示符合pattern的程序号
pidof 查找某一正在運作程序的pid
程序通信
1.共享記憶體空間
2.傳遞信号 signal 可互相傳遞
#kill -l 顯示信号
#man 7 singal 顯示信号
signal:
1)SIGHUP 通知某個程序重讀配置檔案
2)SIGINT 類似ctrl+c 使程序終止
9)SIGKILL 殺死某一程序,不計後果,其結果是其子程序很成為無處可去的程序
15)SIGTERM 殺死某一程序,但給予一定時間處理必要工作
18)SIGCONT 外力喚醒程序(Stop态的程序)
19)SIGSTOP 終止
Attention:序号不僅表示其索引順序,也同樣可以通過序号引用信号
#kill -SIGHUP PID 将信号SIGHUP發送給pid為PID的程序
same as #kill -1 PID
#killall process_name 殺死所有process_name程序
#pkill -SIGNAL pattern 查找程序通過名字或者其他屬性
程序優先級
動态優先級
靜态優先級
程序資訊中的nice值即表示優先級 -20到19對赢優先級的100到139 數值越大優先級越小
普通使用者隻能提高nice值也就是隻能降低自己的優先級
程序建立時,nice被指定為0對應120
#nice 程序還未運作,設定初始nice值
#nice -n num 程序名
#renice 程序已啟動
#renice num PID(數字)
#ps -efo nice,comm|cmd,pid 列印所有程序的nice值,程序名和程序号
作業job
1.前台作業/程序
跟使用者相關,執行開始之後,結束之前始終占據指令提示符的程序
2.背景做緊/程序
執行開始後,立即釋放指令提示符,無論程序結束與否
前台-->背景,ctrl+z挂起不執行了
背景-->前台,fg
3.jobs 檢視背景作業清單
#fg 不帶任何參數 調回jobs清單中帶+号的那個作業
#fg [%]jnum jnum是作業清單每行第一個顯示的數字
希望程序送到背景繼續執行
1.#bg [%]jum
2.kill %num 此處的%不能省略 因為kill num 表示殺死pid為num的程序
前台發起程序,前台終端退出,則程序終止
#nohup 程序名 使程序脫離跟終端的這種從屬關系,即使終端關閉,也可工作
#command & 将command直接送入背景執行,最好非互動的指令
4.top same as windows下的任務管理器 每隔5秒重新整理
"1" 展開|收起 各個cpu狀況資訊(最少有2個cpu才可以)
k,kill某個程序
字段含義
load average num1 num2 num3
load average 平均負載,平均等待隊列時間長度
num1 過去1分鐘平均隊列長度
num2 過去5分鐘平均隊列長度
num3 過去15分鐘平均隊列長度
#top -d(delay 延遲) num 機關秒 延遲多少秒重新整理
#top -b -n 3
-b 工作在批處理模式下
-n 在批處理模式下,重新整理幾次結束指令
3 重新整理3結束指令