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