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
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
避免详细参数被截断;
网友评论