Linux中每個進程都有一個獨立的進程號PID,系統通過PID操控進程。其中原始進程是init他的PID總是1。
Linux進程的五種狀態:
(1)運行:正在運行或在就緒隊列中等待
(2)中斷:休眠中,正在等待某個事件發生或者等待某個信號
(3)不可中斷:收到信號不喚醒和不可運行,一直到有中斷髮生
(4)僵死:進程已經終止,但是PID還在,直到父進程調用wait4()將其釋放
(5)停止:進程收到SIGSTOP,SIGSTP,SIGTIN,SIGTOU信號停止
ps(process status)
ps [選項]
顯示系統中進程信息,他是顯示當前那些進程的快照信息,如果需要動態顯示進程信息需要使用top
a:顯示所有,包括終端的進程
u:顯示進程的所有者
-a:顯示所有當前終端下執行的進程
-e:顯示所有進程
-l:以長列表形式顯示
常與grep組合使用
ps -ef | grep ssh
pstree(process status tree)
以樹狀方式顯示進程的父子關係。使用ASCII字符顯示,清晰表達進程之間的關係
pstree [選項]
-a 顯示每個進程的完整命令
-c 不是用精簡法
-h 標明執行的過程
-l 採用長格式顯示樹狀圖
-p 顯示進程號
-u 顯示用戶名稱
top命令
top [選項]
動態顯示系統正在執行的進程相關信息,包括PID,CPU,內存佔用等
-u 批處理
-c 顯示整個命令而不是顯示命令名
-d 指定兩次屏幕信息刷新時間
-i 不顯示閒置或僵死的進程
-p制定某個進程PID,監視此進程
-s是top命令在安全模式下運行,去除交互所帶來的潛在危險
top交互式命令
c:切換命令名稱的是否完整顯示
Ctrl+L:擦除並且重寫屏幕
f:從當前顯示中添加或者刪除列
h:顯示幫助信息
i:忽略閒置和僵死進程
k:終止一個進程
M:根據駐留內存大小進行排序
P:根據CPU使用排序顯示
q:退出程序
搜索進程
pgrep [選項] 進程
通過程序名稱或者其他屬性查找進程,一般用來判斷程序是否正在運行
pidof [選項] 進程名
通過確切的進程名字找到程序的PID
-s:只顯示一個pid
ps | grep XXX
通過管道來搜索
控制進程
kill [信號代碼] PID
用來殺死一個進程,一般和ps/pidof/pstree/top等結合使用,先找到PID,然後kill掉
信號代碼:
-0 給當前所有在進程組的進程發送信號
-1 給所有進程號大於1的發送信號
-9 強行終止進程
-15終止進程(默認)
-a 種植所有進程
-u指定用戶
killall [-signal] <進程名>
殺死指定名字的進程
pkill [options] pattern
通過進程名字直接殺死所有進程
xkill
殺死圖形界面的程序
進程優先級
nice [-n ADJUST] [--adjustment = ADJUST] [--help] [--version] [command]
進程的優先級用nice值表示,nice可以調整命令的運行優先級,nice值範圍是-20~19共40個等級,數值越小,優先級越高,只有root有權使用負值。如果nice之後沒有加上command參數,那麼會顯示目前執行的等級。優先級超過-19按-19算,超過20按20算。
如:
nice -n 5 ls
renice命令允許用戶修改一個正在運行的進程的優先等級
renice priority [[-p] pids] [[-g] pgrps] [[-u] users]
renice +2 -p 234 -u root
上面的命令將pid爲234及root用戶擁有的進程優先級加1
控制前後臺進程
將一個前臺進程放入後臺
命令 &
如: top & 將top命令放入後臺執行
控制後臺進程
jobs //列出系統作業號和名稱
fg 作業號 // 前臺恢復運行
bg 作業號 //後臺恢復運行
kill 作業號 //殺死作業
以守護進程方式執行任務:nohup
nihup command [Arg...] [&]
使用nohup命令運行的程序註銷後仍可以在後臺運行。
nohup /root/test.sh &
定時執行任務
可以使用at命令定時執行任務
at [-f file] [-mldv] TIME
at命令在制定時間執行某個命令或程序。TIME格式:HH:MM如果制定超過一天MM/DD/YY 月日年
atq //查詢當前用戶正在等待的任務
atrm <任務號> //刪除一個正在等待的任務
at之後進入交互式命令,開始輸入要執行的命令,然後Ctrl+D退出交互式模式