使用PS查看进程

不幸的是,强大的功能导致其复杂性,使得ps命令成为可能最难掌握的命令之一,大多数系统管理员发现ps命令的一部分足够生成他们需要的数据,然后他们就会一直使用这些参数,然后这也说明基本的ps命令并不能提供太多信息.

默认情况下,ps命令只显示属于当前用户并正在当前终端中运行的进程

[root@mio-test Test]# ps
  PID TTY          TIME CMD
29599 pts/0    00:00:00 bash
29766 pts/0    00:00:00 ps

ps命令参数

-A 显示所有进程

-N 显示特定参数的结果的补集

-a 显示除会话标题和无终端进程外的所有进程

-d 显示除回话标题外的所有进程

-e 显示所有进程

-C 显示包含在cmdlist列表中的进程

-G 显示grillst列表中具有组ID的进程

-U 显示userlist列表中的userid拥有的进程

-g 根据会话或包含在grplist中的groundid来显示进程

-p 显示pidlist列表中具有PID的进程

-s 显示sesslist列表中具有ID的进程

-t 显示ttylist列表中具有终端ID的进程

-u 根据user list列表中you’xiao 的userid来显示进程

-F 使用额外完整输出

-O 显示format列表中特定列和默认列

-M 显示关于进程的安全问题

-c 显示关于进程的额外调度信息

-f 显示完整的格式列表

-j 显示作业信息

-l 显示长列表

-o 只显示format中列出的特定列

-y 不显示进程标记

-z 显示安全的上下文信息

-H 以层级格式显示进程(显示父进程)

-n 定义在WCHAN列显示的值

-w 使用宽输出格式,使显示宽度不受限制

-L 显示进程线程

-V 显示ps的版本

上面已经列出了许多参数,但这只是其中的一部分,使用ps命令的关键不是记住所有可用的参数,而是仅记住最有用的参数,比如,如果需要查看系统上运行的一切程序,可以使用-ef参数组合

[root@mio-test Test]# ps -ef
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 Aug25 ?        00:00:00 /sbin/init
root         2     0  0 Aug25 ?        00:00:00 [kthreadd]
root         3     2  0 Aug25 ?        00:00:00 [migration/0]
root         4     2  0 Aug25 ?        00:00:22 [ksoftirqd/0]
root         5     2  0 Aug25 ?        00:00:00 [migration/0]
root         6     2  0 Aug25 ?        00:00:22 [watchdog/0]
root         7     2  0 Aug25 ?        00:00:00 [migration/1]
root         8     2  0 Aug25 ?        00:00:00 [migration/1]
root         9     2  0 Aug25 ?        00:00:08 [ksoftirqd/1]
root        10     2  0 Aug25 ?        00:00:19 [watchdog/1]
root        11     2  0 Aug25 ?        00:08:53 [events/0]

通过使用-e参数用于系统上运行的所有进程,-f参数用于扩展输出以显示一些有用的信息列

UID 负责启动进程的用户

PID 进程ID

PPID 父进程PID(如果某个进程由另一个进程启动)

C 进程存续期的处理器利用率

STIME 进程启动时的系统时间

 TTY 进程从中启动的终端设备

TIME 运行进程所需的累计CPU时间

CMD 启动程序的名称

需要希望查看更多的信息,可以使用-l参数

[root@mio-test Test]# ps -efl
F S UID        PID  PPID  C PRI  NI ADDR SZ WCHAN  STIME TTY          TIME CMD
4 S root         1     0  0  80   0 -   725 -      Aug25 ?        00:00:00 /sbin/init
1 S root         2     0  0  80   0 -     0 -      Aug25 ?        00:00:00 [kthreadd]
1 S root         3     2  0 -40   - -     0 -      Aug25 ?        00:00:00 [migration/0]
1 S root         4     2  0  80   0 -     0 -      Aug25 ?        00:00:22 [ksoftirqd/0]
1 S root         5     2  0 -40   - -     0 -      Aug25 ?        00:00:00 [migration/0]
5 S root         6     2  0 -40   - -     0 -      Aug25 ?        00:00:22 [watchdog/0]
1 S root         7     2  0 -40   - -     0 -      Aug25 ?        00:00:00 [migration/1]
1 S root         8     2  0 -40   - -     0 -      Aug25 ?        00:00:00 [migration/1]
1 S root         9     2  0  80   0 -     0 -      Aug25 ?        00:00:08 [ksoftirqd/1]
5 S root        10     2  0 -40   - -     0 -      Aug25 ?        00:00:19 [watchdog/1]

注意使用-l参数时显示的额外列

F 内核分配给进程的系统标记

S 进程的状态(O=在处理器运行,S=睡眠,R=可运行,Z=死进程,T=进程已停止)

PRI 进程的优先级(数字越大表示优先级越低)

NI nice value 用于判断优先级

ADDR 进程的内存地址

SZ 换出进程大致需要的交换空间

WCHAN 进程睡眠时所在的内核函数地址

-H 参数将进程组织分层,可以显示哪些流程是随其他进程一起启动的

[root@mio-test Test]# ps -efH
root      1195     1  0 Aug25 ?        00:00:00   /usr/sbin/console-kit-daemon --no-daemon
root     28478     1  0 11:02 ?        00:00:00   nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
nobody   29752 28478  0 17:17 ?        00:00:00     nginx: worker process                   
nobody   29753 28478  0 17:17 ?        00:00:01     nginx: worker process                   
root     29115     1  0 14:22 ?        00:00:26   php ./serverd restart