ps [选项]
[功能]
察看运行进程。
[举例]
*显示所有进程:
$ps aux
输入之后,输出如下:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.1 3056 876 ? Ss 09:16 0:01 /sbin/init
root 2 0.0 0.0 0 0 ? S< 09:16 0:00 [kthreadd]
root 2289 0.0 0.0 2528 456 ? S<s 09:16 0:00 /sbin/udevd --daemon
root 4314 0.0 0.0 4040 256 ? Ss 09:17 0:00 /usr/sbin/rpc.idmapd
root 4438 0.0 0.0 1780 420 tty4 Ss+ 09:17 0:00 /sbin/getty 38400 tty4
mysql 4962 0.0 0.5 128400 2856 ? Sl 09:17 0:03 /usr/sbin/mysqld --basedir=/usr -
1000 8472 0.0 1.4 30388 7096 pts/4 Sl+ 13:31 0:00 vi .
1000 8476 0.0 0.7 6388 3544 pts/5 Ss 13:32 0:00 /bin/bash
1000 8504 0.0 0.3 3952 1564 pts/5 S+ 13:33 0:00 man ps
1000 8513 0.0 0.2 3508 1076 pts/5 S+ 13:33 0:00 pager -s
1000 8649 0.0 0.2 2744 1016 pts/3 R+ 13:47 0:00 ps aux
这里,实际上输出的pid是递增的,输出很多,我只截取了很少的一部分,输出过长的行会被截断。字段含义如下:
USER 进程的属主;
PID 进程的ID;
PPID 父进程;
%CPU 进程占用的CPU百分比;
%MEM 占用内存的百分比;
NI 进程的NICE值,数值大,表示较少占用CPU时间;
VSZ 进程虚拟大小;
RSS 驻留中页的数量;
TTY 终端ID
STAT 进程状态(有以下几种)
D 无法中断的休眠状态(通常 IO 的进程);
R 正在运行可中在队列中可过行的;
S 处于休眠状态;
T 停止或被追踪;
W 进入内存交换(从内核2.6开始无效);
X 死掉的进程(从来没见过);
Z 僵尸进程;
< 优先级高的进程
N 优先级较低的进程
L 有些页被锁进内存;
s 进程的领导者(在它之下有子进程);
l 多进程的(使用 CLONE_THREAD, 类似 NPTL pthreads);
+ 位于后台的进程组;
WCHAN 正在等待的进程资源;
START 启动进程的时间;
TIME 进程消耗CPU的时间;
COMMAND 命令的名称和参数;
*输出指定的字段:
$ps -o pid,ppid,pgrp,session,tpgid,comm
输入之后,输出如下:
PID PPID PGRP SESS TPGID COMMAND
6094 6024 6094 6094 6163 bash
6132 6094 6132 6094 6163 vi
6163 6094 6163 6094 6163 ps
*查看当前进程状况
$ps
输入之后,输出如下:
PID TTY TIME CMD
6186 pts/2 00:00:00 bash
8760 pts/2 00:00:00 ps
*查看进程所有者及其他一些详细信息:
$ps u
输入之后,输出如下:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
1000 6147 0.0 0.2 6368 1216 pts/0 Ss 09:23 0:00 bash
1000 6167 0.0 0.1 4296 640 pts/0 S+ 09:23 0:00 screen
1000 6169 0.0 0.3 6396 2012 pts/1 Ss 09:23 0:00 /bin/bash
1000 6186 0.0 0.3 6392 1548 pts/2 Ss+ 09:24 0:00 /bin/bash
1000 6230 0.0 0.4 6400 2076 pts/3 Ss+ 09:24 0:00 /bin/bash
1000 6247 0.0 0.4 6408 2212 pts/4 Ss+ 09:24 0:00 /bin/bash
1000 7432 0.0 0.2 3276 1088 pts/1 S+ 10:43 0:00 telnet 192.168.100.200
1000 8472 0.0 1.4 30388 7144 pts/4 Tl 13:31 0:01 vi .
1000 8476 0.0 0.7 6388 3544 pts/5 Ss 13:32 0:00 /bin/bash
1000 8504 0.0 0.3 3952 1564 pts/5 S+ 13:33 0:00 man ps
1000 8513 0.0 0.2 3508 1076 pts/5 S+ 13:33 0:00 pager -s
1000 8837 0.5 0.6 6288 3448 tty1 S+ 14:08 0:00 -bash
1000 8958 5.3 0.6 6376 3536 pts/6 Ss 14:08 0:00 bash
1000 8974 0.0 0.2 2744 1020 pts/6 R+ 14:08 0:00 ps u
这里,使用u选项来查看进程所有者及其他一些详细信息,注意是u不是-u.
注意,在bash进程前面有条横线,意味着该进程便是用户的登录shell,所以对于一个登录用户来说带短横线的进程只有一个。还可以看到%CPU、%MEM两个选项,前者指该进程占用的CPU时间和总时间的百分比;后者指该进程占用的内存和总内存的百分比。在这种情况下看到了所有控制终端的进程;但是对于其他那些没有控制终端的进程还是没有观察到,所以这时就需要使用x选项。使用x选项可以观察到所有的进程情况。
*查看系统上所有的进程:
$ps -e
*查看你的进程:
$ps x
*以树状方式显示进程:
$ps f
输入之后,输出如下:
PID TTY STAT TIME COMMAND
8476 pts/5 Ss 0:00 /bin/bash
8504 pts/5 S+ 0:00 \_ man ps
8513 pts/5 S+ 0:00 \_ pager -s
6247 pts/4 Ss 0:00 /bin/bash
8472 pts/4 Sl+ 0:01 \_ vi .
6230 pts/3 Ss 0:00 /bin/bash
9168 pts/3 R+ 0:00 \_ ps f
6186 pts/2 Ss+ 0:00 /bin/bash
6169 pts/1 Ss 0:00 /bin/bash
7432 pts/1 S+ 0:00 \_ telnet 192.168.100.200
6147 pts/0 Ss 0:00 bash
6167 pts/0 S+ 0:00 \_ screen
8837 tty1 S+ 0:00 -bash
*树形显示所有进程并且没有截断:
ps auxfww
[描述]
要对进程进行监测和控制,首先必须要了解当前进程的情况,也就是需要查看当前进程,而ps命令就是最基本同时也是非常强大的进程查看命令。使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等。总之大部分信息都是可以通过执行该命令得到的。ps 为我们提供了进程的一次性的查看,它所提供的查看结果并不动态连续的;如果想对进程时间监控,应该用 top 工具。
ps命令最常用的还是用于监控后台进程的工作情况,因为后台进程是不和屏幕键盘这些标准输入/输出设备进行通信的,所以如果需要检测其情况,便可以使用ps命令了。
注意"ps -aux"和"ps aux"是不同的。POSIX和UNIX标准,要求"ps -aux"打印用户名"x"拥有的所有进程,和使用-a选项选定的进程。如果用户"x"不存在,那么就把命令解释成为"ps aux",并且打印一个警告。
默认的情况,ps选择所有具有和当前用户相同的effective user ID(euid),以及和进程相关的终端(tname=TTY),CPU时间,和可执行名称.
还可以看线程。
命令项说明:
-e 显示所有进程。
-f 全格式,用树形格式来显示进程。
-l 长格式。
-w 宽输出(同w)。
-a 显示所有的除了session leaders之外的进程和与终端无关的进程。
h 不显示标题(注意,这里面没有前面的横线)。
a 显示终端上的所有进程,包括其他用户的进程。(注意和-a不同)
ww 避免详细参数被截断;