ps 命令的十個簡單用法

註記

ps 命令有兩種不一樣的語法風格 —— BSD 與 UNIX 兩種風格。新手經常對這兩種形式產生誤解,所以咱們有必要在這裏做一個簡單的說明:python

ps aux 與 ps -aux 是不一樣的,例如 -u 參數表示打印進程的 uid,而參數 u 表示顯示進程的詳細信息。bash

  • BSD 格式 —— 參數前面不加 -
$ ps aux
  • UNIX/LINUX 格式 —— 參數前面一般要加 -
$ ps -aux

兩種格式是容許混用的,例如 ps ax -f,但本文主要展現UNIX風格。ui

1. 查看全部進程

$ ps ax
$ ps -e

加上 -f 或者 u 參數能夠顯示進程的詳細信息線程

$ ps aux
$ ps -ef

注:當用戶名超過8個字符時,以uid顯示;小於等於8字符時,以用戶名顯示。rest

2. 顯示某個用戶的進程

$ ps -f -u nova,neutron

3. 經過進程名或者進程id顯示進程

$ ps -C neutron-server
# -C 只能搜索名爲neutron-server的進程(徹底匹配),不能使用部分搜索或者通配符,例如 ps -C neutron 就不會顯示neutron-server進程。所以部分匹配用 ps -ef | grep neutron

$ ps -f -p 3150,7298,6544

4. 利用 cpu 或者內存使用量對進程排序

$ ps aux --sort=-pcpu,+pmem
# 首先以 cpu 使用量排序呢, 若是 cpu 使用量相同,則之內存使用量排序。
$ ps aux --sort=-pcpu,+pmem | head 5

5. 顯示 ASCII 進程樹

$ ps -ef --forest
$ ps -f --forest -C neutron-server

6. 顯示父進程的子進程

$ ps -o pid,uname,comm -C neutron-server
28208 hebin    neutron-server
28221 hebin    neutron-server
28222 hebin    neutron-server
28223 hebin    neutron-server
28224 hebin    neutron-server
28225 hebin    neutron-server

$ ps --ppid 28208
 PID TTY          TIME CMD
28221 pts/12   00:00:06 neutron-server
28222 pts/12   00:00:06 neutron-server
28223 pts/12   00:01:02 neutron-server
28224 pts/12   00:00:52 neutron-server
28225 pts/12   00:00:28 neutron-server

7. 顯示進程的線程

$ ps -ef | grep rock-mon
root     14447     1  0 12:47 ?        00:02:01 /usr/bin/python /usr/bin/rock-mon
root     32279 31077  0 23:03 pts/0    00:00:00 grep --color=auto rock-mon

$ ps -p 14447 -L
  PID   LWP TTY          TIME CMD
14447 14447 ?        00:00:00 rock-mon
14447 14480 ?        00:00:09 rock-mon
14447 14483 ?        00:00:00 rock-mon
14447   597 ?        00:00:00 rock-mon
14447   759 ?        00:00:00 rock-mon

8. 改變顯示的字段

$ ps -e -o pid,uname,pcpu,pmem,comm
$ ps -e -o pid,uname=USERNAME,pcpu=CPU_USAGE,pmem,comm

9. 顯示進程已運行的時間

$ ps -e -o pid,comm,etime

10. 用ps命令實時顯示進程信息

$ watch -n 1 'ps -e -o pid,uname,cmd,pmem,pcpu --sort=-pmem,-pcpu | head -15'
相關文章
相關標籤/搜索