Linux 有關管理進程的命令小結
1.kill
NAME
kill - terminate a process (終止進程)
SYNOPSIS
kill [-signal] pid
說明:
kill 給指定進程發送指定信號. 如果沒有指定信號, 則發送 TERM 信號. TERM
信號會殺死不能俘獲該信號的進程. 對於其他進程, 可能需要使用 KILL (9) 信號,
因為該信號不能夠被俘獲.
有效信號列表:
信號 | 值 | 動作 | 說明 |
---|---|---|---|
SIGHUP | 1 | A | 在控制終端上是掛起信號, 或者控制進程結束 |
SIGINT | 2 | A | 從鍵盤輸入的中斷 |
SIGQUIT | 3 | C | 從鍵盤輸入的退出 |
SIGILL | 4 | C | 無效硬件指令 |
SIGABRT | 6 | C | 非正常終止, 可能來自 abort(3) |
SIGFPE | 8 | C | 浮點運算例外 |
SIGKILL | 9 | AEF | 殺死進程信號 |
SIGSEGV | 11 | C | 無效的內存引用 |
SIGPIPE | 13 | A | 管道中止: 寫入無人讀取的管道 |
SIGALRM | 14 | A | 來自 alarm(2) 的超時信號 |
SIGTERM | 15 | A | 終止信號 |
SIGUSR1 | 30,10,16 | A | 用戶定義的信號 1 |
SIGUSR2 | 31,12,17 | A | 用戶定義的信號 2 |
SIGCHLD | 20,17,18 | B | 子進程結束或停止 |
SIGCONT | 19,18,25 | 繼續停止的進程 | |
SIGSTOP | 17,19,23 | DEF | 停止進程 |
SIGTSTP | 18,20,24 | D | 終端上發出的停止信號 |
SIGTTIN | 21,21,26 | D | 後臺進程試圖從控制終端(tty)輸入 |
SIGTTOU | 22,22,27 | D | 後臺進程試圖在控制終端(tty)輸出 |
其中,動作欄的字母含義:
A 缺省動作是結束進程. B 缺省動作是忽略這個信號. C 缺省動作是結束進程, 並且核心轉儲. D 缺省動作是停止進程. E 信號不能被捕獲. F 信號不能被忽略.
註意:
這裏 "結束" 指進程終止並釋放資源, "停止" 指 進程停止運行, 但是資源沒有釋放, 有可能繼續運行.
順便小結下有關管理進程的命令
ps
NAME
ps - report a snapshot of the current processes.(用於報告當前系統的進程狀態)
SYNOPSIS
ps [選項]
比較常用的選項:
-a:顯示有終端機下執行的程序,除了階段作業。
-A:顯示所有程序。
-e:效果與指定"-A"選項相同
e:列出程序時,顯示每個程序所使用的環境變量
f:用ASCII字符顯示樹狀結構,表達程序間的相互關系。
u:以用戶為主的格式顯示程序狀況
x:顯示所有程序,不以終端機來區分
實戰:
1.顯示所有當前進程
ps -ax|less
2.根據用戶過濾進程
ps -u <用戶名或者ID>
3.通過cpu和內存使用來過濾進程
ps -aux|less
根據 CPU 使用來升序排序
ps -aux --sort -pcpu | less
根據 內存使用 來升序排序
ps -aux --sort -pmem | less
4.通過進程名和PID過濾
ps -f -C sshd
5.樹形顯示進程
ps -axjf
pstree
有關進程的5種狀態
R(運行):進程正在運行或在隊列中等待。
S(中斷):進程處於休眠中,當某個條件形成或者接收到信號時,則脫離該狀態。
D(不可中斷):進程不響應系統異步信號,即便使用kill命令也不能將其中斷。
Z(僵死):進程已經終止,但進程的描述符依然存在。
T(停止):進程收到停止信號後停止運行。
pidof命令:
查詢某個指定服務進程的PID值
[root@localhost ~]# pidof sshd
2118 1488
killall命令:
用於終止某個指定名稱的服務所對應的全部進程。
比如:
killall httpd
Linux 有關管理進程的命令小結