ps这个命令的man page 不是很好查阅,因为很多不同的Unix都使用这儿ps来查阅进程的状态,为了要符合不同版本的需求,所以这个man page写的非常庞大。所以一般我会选择记住两个命名组合,一个是"ps -l" 查看自己bash程序的进程,"ps aux"查看系统所以运行程序的进程
ps -l 仅查看自己的bash相关的进程
[root@localhosttest]#ps -l
F S
4 S
0 S
4 R
各个列的含义:
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
root
root
root
root
root
root
root
.......!
从上可以发现,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方式显示
- a 显示所有用户的进程(show processes for all users)
- u 显示用户(display the process's user/owner)
- x 显示无控制终端的进程(also show processes not attached to a terminal)
ps -ef是以System V方式显示,该种方式比BSD方式显示的多
- e 显示所有用户的进程(all processes)此参数的效果和指定"a"参数相同
- f 用ASCII字符显示树状结构,表达程序间的相互关系(ASCII art forest)
下面看两个命令各自显示哪些内容:
$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]
其中显示了:
- USER 哪个用户启动了这个命令
- PID 进程ID
- CPU CPU占用率
- MEM 内存使用量
- VSZ 如果一个程序完全驻留在内存的话需要占用多少内存空间
- RSS 当前实际占用了多少内存
- TTY: 终端的次要装置号码 (minor device number of tty)
- STAT 进程当前的状态("S":中断 sleeping,进程处在睡眠状态,表明这些进程在等待某些事件发生--可能是用户输入或者系统资源的可用性;"D":不可中断 uninterruptible sleep;"R":运行runnable;"T":停止 traced or stopped;"Z":僵死 a defunct zombie process)
- START 启动命令的时间点
- TIME 进程执行起到现在总的CPU暂用时间
- COMMAND 启动这个进程的命令
$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]
其中显示了:
- UID 用户号
- PID 进程ID
- PPID 父进程号
- C CPU占用率
- TTY 终端的次要装置号码 (minor device number of tty)
- TIME 进程执行起到现在总的CPU暂用时间
- COMMAND 启动这个进程的命令
一般使用这两个命令的作用是查看预期的进程是否启动,或者杀死指定的进程,例如查看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命令可以很好的查看和操作进程,使得在进程管理很方便。