ps这个命令的man page 不是很好查阅,因为很多不同的Unix都使用这儿ps来查阅进程的状态,为了要符合不同版本的需求,所以这个man page写的非常庞大。所以一般我会选择记住两个命名组合,一个是"ps -l" 查看自己bash程序的进程,"ps aux"查看系统所以运行程序的进程
ps -l 仅查看自己的bash相关的进程
[root@localhosttest]#ps -l
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
4 S 0217521710800 - 1315 - pts/000:00:00 bash
0 S 0221210800 - 190946 - pts/000:00:53 java
4 R 0699121750800 - 1219 - pts/000:00:00ps
各个列的含义:
F:代表这个进程标志,说明这个进程的权限,常见的号码有
1、若为4表示此进程的权限为root.
2、若为0则表示此子进程仅可进行复制而无法实际执行
S:代表这个进程的状态,主要的状态有
1、R(running):该进程正在进行中。
2、S(sleep):该进程目前正在睡眠状态,但是可以被唤醒。
3、D:不可被唤醒的睡眠状态,通常这个进程可能在等待I/O的情况
4、T(stop):停止状态,可能是后台暂停(Ctrl+Z),或者执行出错
5、Z(zombie):“僵尸状态”,进程已经终止但却无法删除至内存外
UID、PID、PPID:分别表示该进程被UID所拥有、进程的PID号码、此进程父进程的PID号码。
C:代表CPU的使用率,单位为百分比。
PRI、NI:代表此进程被CPU执行的优先级,数字越小代表该进程越快被CPU执行。
SZ:代表此进程用掉了多少内存。
TIME:使用掉的CPU时间,注意,是吃进程实际花费CPU的运行时间,而不是系统时间。
CMD:触发该进程的命令为何。
查看系统所有进程:ps aux
[root@localhosttest]#ps aux
USER PID %CPU%MEM VSZ RSS TTY STAT START TIME COMMAND
root 10.00.129001444 ? Ss Dec14 0:01 /sbin/init
root 20.00.000 ? S Dec14 0:00 [kthreadd]
root 30.00.000 ? S Dec14 0:00 [migration/0]
root 40.00.000 ? S Dec14 0:00 [ksoftirqd/0]
root 50.00.000 ? S Dec14 0:00 [migration/0]
root 60.00.000 ? S Dec14 0:00 [watchdog/0]
root 70.00.000 ? S Dec14 0:01 [events/0]
.......!
从上可以发现,ps -l与ps aux显示的项目并不相同!在ps aux显示的项目中,各个字段的意义如下所示:
USER:该进程由那个用户创建;
PID:该进程进程的标识符;
%CPU:该进程使用掉的CPU的百分比;
%MEM:该进程所占用的物理内存百分比;
VSZ:该进程使用掉的虚拟内存量(KB);
RSS:该进程占用的固定的内存量(KB);
TTY:该进程是在那个终端机上面运行,若与终端机无关则显示?,tty1~tty6是本机上面的登录者程序,若为pts/0这表示为由网络连接进主机的进程。
STAT:该进程目前的状态,跟ps -l 的S标识相同(R/S/T/Z);
START:该进程被触发启动的时间;
TIMe:该进程实际使用CPU的运行时间;
COMMAND:该进程的实际命令;
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方式显示
ps -ef是以System V方式显示,该种方式比BSD方式显示的多
下面看两个命令各自显示哪些内容:
$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]
其中显示了:
$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]
其中显示了:
一般使用这两个命令的作用是查看预期的进程是否启动,或者杀死指定的进程,例如查看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命令可以很好的查看和操作进程,使得在进程管理很方便。