ps命令
常用参数:
a 显示所有用户的所有进程(包括其它用户);
u 按用户名和启动时间的顺序来显示进程;
x 显示无控制终端的进程;
e 显示所有进程,包括没有控制端的进程;
f 用树形格式来显示进程;
l 长格式输出;
w 为了避免详细参数被截断,可以用多个w来让其显示完整(比如说ww或者是www);
o 需要查看的选项
举例说明:
# ps aux | more
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 19356 680 ? Ss Nov23 0:01 /sbin/init
root 2 0.0 0.0 0 0 ? S Nov23 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S Nov23 0:00 [migration/0]
root 30 0.0 0.0 0 0 ? SN Nov23 0:00 [ksmd]
root 31 0.0 0.0 0 0 ? SN Nov23 0:05 [khugepaged]
root 32 0.0 0.0 0 0 ? S Nov23 0:00 [aio/0]
root 278 0.0 0.0 0 0 ? S Nov23 1:58 [jbd2/sda3-8]
root 279 0.0 0.0 0 0 ? S Nov23 0:00 [ext4-dio-unwrit]
root 364 0.0 0.0 10808 208 ? S<s Nov23 0:00 /sbin/udevd -d
root 932 0.0 0.0 93176 484 ? S<sl Nov23 0:03 auditd
root 948 0.0 0.1 249088 1564 ? Sl Nov23 0:02 /sbin/rsyslogd -i /var/run/syslogd.pid -c 5
rpc 990 0.0 0.0 18984 320 ? Ss Nov23 0:04 rpcbind
68 1087 0.0 0.1 37932 1288 ? Ssl Nov23 0:16 hald
root 1088 0.0 0.0 20328 340 ? S Nov23 0:00 hald-runner
root 1147 0.0 0.0 66632 392 ? Ss Nov23 0:00 /usr/sbin/sshd
root 1180 0.0 0.0 110320 356 ? Ss Nov23 0:00 /usr/sbin/abrtd
root 1213 0.0 0.0 4064 172 tty1 Ss+ Nov23 0:00 /sbin/mingetty /dev/tty1
--More--
ps命令输出中包含的信息:
USER:进程的属主;
PID:进程的ID;
PPID:父进程;
%CPU:进程占用的CPU百分比;
%MEM:占用内存的百分比;
NI:进程的NICE值,也就是进程的优先值(-20~19之间),数值越大,优先级越底;
VSZ:进程虚拟大小;
RS: 驻留中页的数量;
TTY: 终端ID。问号表示是无终端的,也就是系统本身。
STAT: 进程状态
D Uninterruptible sleep (usually IO)
R 正在运行可中在队列中可过行的;
S 处于休眠状态;
T 停止或被追踪;
W 进入内存交换(从内核2.6开始无效);
X 死掉的进程(从来没见过);
Z 僵尸进程;
<</strong> 优先级高的进程
N 优先级较低的进程
L 有些页被锁进内存;
s 进程的领导者(在它之下有子进程);
l 多线程 (using CLONE_THREAD, like NPTL pthreads do)
+ 位于后台的进程组;
WCHAN:正在等待的进程资源;
START:启动进程的时间;
TIME:进程消耗CPU的时间;
COMMAND:启动进程的命令的名称和参数;
ps命令的其他用法:
# ps aux | grep httpd ##查看nginx程序的进程
root 15665 1 0 Dec06 ? 00:00:00 nginx: master process /soft/openresty/nginx/sbin/nginx
nginx 15676 15665 0 Dec06 ? 00:00:00 nginx: worker process
# ps axo pid,%cpu,%mem,comm | grep nginx ##只查看pid,%cpu,%mem,comm这几项
15665 0.0 0.8 nginx
15676 0.0 0.8 nginx
目前常用的就这么几个,后面又用的其他的在添加。
Tips:什么是僵尸进程。通常,造成僵尸进程的成因是因为该进程应该已经执行完毕,或者是因故应该要终止了, 但是该进程的父进程却无法完整的将该进程结束掉,而造成那个进程一直存在内存当中。如果你发现在某个进程的 CMD 后面还接上 时,就代表该进程是僵尸进程。当系统不稳定的时候就容易造成所谓的僵尸进程。也有可能是因为程序写的不完善,或者是使用者的操作习惯不良等等所造成。如果你发现系统中很多僵尸进程时,记得要找出该进程的父进程,然后做个跟踪排除问题!