PID是每個進程唯一號碼。使用 ps
獲取所有正在運行的進程列表。
# ps -auxefw
# 所有正在運行進程的詳盡列表
然而,更典型的用法是使用管道或者 pgrep
:
# ps axww | grep cron
586 ?? Is 0:01.48 /usr/sbin/cron -s
# ps aux | grep 'ss[h]'
# Find all ssh pids without the grep pid
# pgrep -l sshd
# 查找所有進程名中有sshd的進程ID
# echo $$
# The PID of your shell
# fuser -va 22/tcp
# 列出使用端口22的進程
# fuser -va /home
# 列出訪問 /home 分區(qū)的進程
# strace df
# 跟蹤系統(tǒng)調(diào)用和信號
# truss df
# 同上(FreeBSD/Solaris/類Unix)
# history | tail -50
# 顯示最后50個使用過的命令
用 renice
更改正在運行進程的優(yōu)先級。負值是更高的優(yōu)先級,最小為-20,其正值與 "nice" 值的意義相同。 # renice -5 586
使用 nice
命令啟動一個已定義優(yōu)先級的進程。 正值為低優(yōu)先級,負值為高優(yōu)先級。確定你知道 /usr/bin/nice
或者使用 shell 內(nèi)置命令(# which nice
)。
# nice -n -5 top
# 更高優(yōu)先級(/usr/bin/nice)
# nice -n 5 top
# 更低優(yōu)先級(/usr/bin/nice)
# nice +5 top
# tcsh 內(nèi)置 nice 命令(同上)
nice 可以影響 CPU 的調(diào)度,另一個實用命令 ionice
可以調(diào)度磁盤 IO。This is very useful for intensive IO application which can bring a machine to its knees while still in a lower priority. 此命令僅可在 Linux (AFAIK) 上使用。你可以選擇一個類型(idle - best effort - real time),它的 man 頁很短并有很好的解釋。
# ionice c3 -p123
# 給 pid 123 設置為 idle 類型
# ionice -c2 -n0 firefox
# 用 best effort 類型運行 firefox 并且設為高優(yōu)先級
# ionice -c3 -p$$
# 將當前的進程(shell)的磁盤 IO 調(diào)度設置為 idle 類型
例中最后一條命令對于編譯(或調(diào)試)一個大型項目會非常有用。每一個運行于此 shell 的命令都會有一個較低的優(yōu)先級,但并不妨礙這個系統(tǒng)。$$ 是你 shell 的 pid (試試 echo $$)。
當一個進程在 shell 中已運行,可以使用 [Ctrl]-[Z] (^Z)
, bg
和 fg
來 調(diào)入調(diào)出前后臺。舉個例子:啟動 2 個進程,調(diào)入后臺。使用 jobs
列出后臺列表,然后再調(diào)入一個進程到前臺。 # ping cb.vu > ping.log
^Z
# bg
# 調(diào)入后臺繼續(xù)運行# jobs -l
# 后臺進程列表[1] - 36232 Running ping cb.vu > ping.log
[2] + 36233 Suspended (tty output) top
# fg %2
# 讓進程 2 返回到前臺運行
使用 nohup
開啟一個持續(xù)運行的進程直到 shell 被關閉(避免掛斷)。 # nohup ping -i 60 > ping.log &
top
程序用來實時顯示系統(tǒng)中各個進程的運行信息。 # top
當 top
在運行的時候,按下 h
鍵會顯示幫助畫面。常用鍵如下:
u [用戶名] 只顯示屬于此用戶的進程。使用 + 或者空白可以查看所有用戶
k [PID] 結束 PID 進程
1 顯示所有進程狀態(tài)信息(只有Linux)
R 將當前排序倒轉(zhuǎn)
使用 kill
或 killall
終止或發(fā)送一個信號給進程。
# ping -i 60 cb.vu > ping.log & [1] 4712
# kill -s TERM 4712
# 同 kill -15 4712
# killall -1 httpd
# 發(fā)送 HUP 信號終止進程 httpd
# pkill -9 http
# 發(fā)送 TERM 信號終止包含 http 的進程
# pkill -TERM -u www
# 發(fā)送 TERM 信號終止 www 所有者進程# fuser -k -TERM -m /home
# 終止所有訪問 /home 的進程(卸載該分區(qū)前)
下面是一些重要的信號:
HUP
(掛起)INT
(中斷)QUIT
(退出)KILL
(KILL 信號不能被捕捉,不能被忽略。)TERM
(軟件終止信號)
更多建議: