linux系統下ps -aux和ps -ef命令參數的做用及區別詳解

在linux系統中,ps是簡單而強大的進程查看命令,而ps -aux和ps -ef是打印出全部進程。其中的參數詳解以下:ps -aux是以BSD方式顯示a顯示全部用戶的進程(show processes for all users)u 顯示用戶(display
在linux系統中,ps是簡單而強大的進程查看命令,而ps -aux和ps -ef是打印出全部進程。其中的參數詳解以下:
ps -aux 是以BSD方式顯示

  • a 顯示全部用戶的進程(show processes for all users)
  • u 顯示用戶(display the process's user/owner)
  • x 顯示無控制終端的進程(also show processes not attached to a terminal)

ps -ef 是以System V方式顯示,該種方式比BSD方式顯示的多

  • e 顯示全部用戶的進程(all processes)此參數的效果和指定"a"參數相同
  • f  用ASCII字符顯示樹狀結構,表達程序間的相互關係(ASCII art forest)

下面看兩個命令各自顯示哪些內容:

$ps -aux 
USER       PID %CPU %MEM   VSZ  RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.0  4828  516 ?        Ss    2014   1:28 init [3]         
root         2  0.0  0.0     0    0 ?        S     2014   0:00 [kthreadd]
root         3  0.0  0.0     0    0 ?        S     2014   0:43 [migration/0]
root         4  0.0  0.0     0    0 ?        S     2014   7:34 [ksoftirqd/0]
root         5  0.0  0.0     0    0 ?        S     2014   0:01 [migration/0]
root         6  0.0  0.0     0    0 ?        S     2014   0:03 [watchdog/0]
root         7  0.0  0.0     0    0 ?        S     2014   3:04 [migration/1]
root         8  0.0  0.0     0    0 ?        S     2014   0:01 [migration/1]
root         9  0.0  0.0     0    0 ?        S     2014   1:44 [ksoftirqd/1]
root        10  0.0  0.0     0    0 ?        S     2014   0:01 [watchdog/1]
root        11  0.0  0.0     0    0 ?        S     2014   2:21 [migration/2]
root        12  0.0  0.0     0    0 ?        S     2014   0:01 [migration/2]

其中顯示了:
 
  • USER 哪一個用戶啓動了這個命令
  • PID 進程ID
  • CPU CPU佔用率
  • MEM 內存使用量
  • VSZ 若是一個程序徹底駐留在內存的話須要佔用多少內存空間
  • RSS 當前實際佔用了多少內存
  • TTY: 終端的次要裝置號碼 (minor device number of tty)
  • STAT 進程當前的狀態("S":中斷 sleeping,進程處在睡眠狀態,代表這些進程在等待某些事件發生--多是用戶輸入或者系統資源的可用性;"D":不可中斷 uninterruptible sleep;"R":運行 runnable;"T":中止 traced or stopped;"Z":僵死 a defunct zombie process)
  • START 啓動命令的時間點
  • TIME 進程執行起到如今總的CPU暫用時間
  • COMMAND 啓動這個進程的命令


$ps -ef 
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0  2014 ?        00:01:28 init [3]         
root         2     0  0  2014 ?        00:00:00 [kthreadd]
root         3     2  0  2014 ?        00:00:43 [migration/0]
root         4     2  0  2014 ?        00:07:34 [ksoftirqd/0]
root         5     2  0  2014 ?        00:00:01 [migration/0]
root         6     2  0  2014 ?        00:00:03 [watchdog/0]
root         7     2  0  2014 ?        00:03:04 [migration/1]
root         8     2  0  2014 ?        00:00:01 [migration/1]
root         9     2  0  2014 ?        00:01:44 [ksoftirqd/1]
root        10     2  0  2014 ?        00:00:01 [watchdog/1]
root        11     2  0  2014 ?        00:02:21 [migration/2]
root        12     2  0  2014 ?        00:00:01 [migration/2]


其中顯示了:

  • UID 用戶號
  • PID 進程ID
  • PPID 父進程號
  • C CPU佔用率
  • TTY 終端的次要裝置號碼 (minor device number of tty)
  • TIME 進程執行起到如今總的CPU暫用時間
  • COMMAND 啓動這個進程的命令

通常使用這兩個命令的做用是查看預期的進程是否啓動,或者殺死指定的進程,例如查看memcached進程是否正常啓動:

$ps -ef | grep 'memcached'
work   14896  5034  0 16:30 pts/12   00:00:00 grep memcached
work   27799     1  0  2014 ?        00:01:08 /home/work/local/memcache/bin/memcached -d -m 8096 -p 11215 -c 256

經過grep命令能夠查找指定的進程名稱,上面例子查找發現正常運行了,但若是我要關閉這個進程,能夠經過殺死PID來完成,例如memcached的PID是27799,那麼執行下面kill命令便可:

$kill 27799
$ps -ef | grep 'memcached'
work   14896  5034  0 16:30 pts/12   00:00:00 grep memcached

再次查找進程已經消失。


小結:ps命令能夠很好的查看和操做進程,使得在進程管理很方便。
相關文章
相關標籤/搜索