Linux下顯示系統進程的命令ps,最經常使用的有ps -ef 和ps aux。這兩個到底有什麼區別呢?二者沒太大差異,討論這個問題,要追溯到Unix系統中的兩種風格,System V風格和BSD 風格,ps aux最初用到Unix Style中,而ps -ef被用在System V Style中,二者輸出略有不一樣。如今的大部分Linux系統都是能夠同時使用這兩種方式的。vim
ps -ef 是用標準的格式顯示進程的、其格式以下網絡
其中各列的內容意思以下
UID //用戶ID、但輸出的是用戶名
PID //進程的ID
PPID //父進程ID
C //進程佔用CPU的百分比
STIME //進程啓動到如今的時間
TTY //該進程在那個終端上運行,若與終端無關,則顯示? 若爲pts/0等,則表示由網絡鏈接主機進程。
CMD //命令的名稱和參數多線程
ps aux 是用BSD的格式來顯示、其格式以下spa
同ps -ef 不一樣的有列有
USER //用戶名
%CPU //進程佔用的CPU百分比
%MEM //佔用內存的百分比
VSZ //該進程使用的虛擬內存量(KB)
RSS //該進程佔用的固定內存量(KB)(駐留中頁的數量)
STAT //進程的狀態
START //該進程被觸發啓動時間
TIME //該進程實際使用CPU運行的時間線程
其中STAT狀態位常見的狀態字符有
D //沒法中斷的休眠狀態(一般 IO 的進程);
R //正在運行可中在隊列中可過行的;
S //處於休眠狀態;
T //中止或被追蹤;
W //進入內存交換 (從內核2.6開始無效);
X //死掉的進程 (基本不多見);
Z //殭屍進程;
< //優先級高的進程
N //優先級較低的進程
L //有些頁被鎖進內存;
s //進程的領導者(在它之下有子進程);
l //多線程,克隆線程(使用 CLONE_THREAD, 相似 NPTL pthreads);
+ //位於後臺的進程組;3d
實例1:列出全部信號名稱
命令:kill -l
輸出:
[root@localhost test6]# kill -l
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL
5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE
9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2
13) SIGPIPE 14) SIGALRM 15) SIGTERM 16) SIGSTKFLT
17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU
25) SIGXFSZ 26) SIGVTALRM 27) SIGPROF 28) SIGWINCH
29) SIGIO 30) SIGPWR 31) SIGSYS 34) SIGRTMIN
35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3 38) SIGRTMIN+4
39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12
47) SIGRTMIN+13 48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14
51) SIGRTMAX-13 52) SIGRTMAX-12 53) SIGRTMAX-11 54) SIGRTMAX-10
55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7 58) SIGRTMAX-6
59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
63) SIGRTMAX-1 64) SIGRTMAXblog
說明:
只有第9種信號(SIGKILL)才能夠無條件終止進程,其餘信號進程都有權利忽略。 下面是經常使用的信號:
HUP 1 終端斷線
INT 2 中斷(同 Ctrl + C)
QUIT 3 退出(同 Ctrl + \)
TERM 15 終止
KILL 9 強制終止
CONT 18 繼續(與STOP相反, fg/bg命令)
STOP 19 暫停(同 Ctrl + Z)隊列
實例2:獲得指定信號的數值進程
[root@localhost test6]# kill -l KILL
[root@localhost test6]# kill -l SIGKILL
[root@localhost test6]# kill -l TERM
[root@localhost test6]# kill -l SIGTERM
[root@localhost test6]#內存
實例3:先用ps查找進程,而後用kill殺掉
命令:kill 3268
[root@localhost test6]# ps -ef|grep vim
root 3268 2884 0 16:21 pts/1 00:00:00 vim install.log
root 3370 2822 0 16:21 pts/0 00:00:00 grep vim
[root@localhost test6]# kill 3268
實例4:完全殺死進程
命令:kill –9 3268 // -9 強制殺掉進程
pkill 是按照進程明殺死進程,發送信號與kill同樣