分析:使用ps命令

# ps -ef   显示所有进程   

# ps -eo comm,pcpu  显示所有命令占用的cpu的大小 

 e显示所有进程,o指定命令的名字

# ps -eo comm,pmem  显示所有命令占用的mem的大小 


ps工具标识进程的5种状态码: 

D 不可中断 uninterruptible sleep (usually IO) 

R 运行 runnable (on run queue) 

S 中断 sleeping 

T 停止 traced or stopped 

Z 僵死 a defunct (”zombie”) process 


[root@localhost ~]# ps -ef
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 Jul02 ?        00:00:06 init [5]                       
root         2     1  0 Jul02 ?        00:00:00 [migration/0]
root         3     1  0 Jul02 ?        00:00:00 [ksoftirqd/0]
root         4     1  0 Jul02 ?        00:00:00 [watchdog/0]
root         5     1  0 Jul02 ?        00:00:00 [migration/1]
root         6     1  0 Jul02 ?        00:00:00 [ksoftirqd/1]
root         7     1  0 Jul02 ?        00:00:00 [watchdog/1]
root         8     1  0 Jul02 ?        00:00:00 [migration/2]
root         9     1  0 Jul02 ?        00:00:00 [ksoftirqd/2]

-e : 在命令执行后显示环境

-f : 完整显示输出

1) 进程用户ID(UID)

2) 进程ID (PID)

3) 父进程ID (PPID)

4) CPU 调度情况 (C)

5) 进程启动的时间 (STIME)

6) 进程共占用CPU的时间(TIME)



实例:列出目前所有的正在内存当中的程序

[root@localhost test6]# ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.0  10368   676 ?        Ss   Nov02   0:00 init [3]                  
root         2  0.0  0.0      0     0 ?        S<   Nov02   0:01 [migration/0]
root         3  0.0  0.0      0     0 ?        SN   Nov02   0:00 [ksoftirqd/0]
root         4  0.0  0.0      0     0 ?        S<   Nov02   0:01 [migration/1]
root         5  0.0  0.0      0     0 ?        SN   Nov02   0:00 [ksoftirqd/1]
root         6  0.0  0.0      0     0 ?        S<   Nov02  29:57 [events/0]
root         7  0.0  0.0      0     0 ?        S<   Nov02   0:00 [events/1]
root         8  0.0  0.0      0     0 ?        S<   Nov02   0:00 [khelper]
root        49  0.0  0.0      0     0 ?        S<   Nov02   0:00 [kthread]
root        54  0.0  0.0      0     0 ?        S<   Nov02   0:00 [kblockd/0]
root        55  0.0  0.0      0     0 ?        S<   Nov02   0:00 [kblockd/1]
root        56  0.0  0.0      0     0 ?        S<   Nov02   0:00 [kacpid]
……省略部分结果

说明:

USER:该 process 属于那个使用者账号的

PID :该 process 的号码

%CPU:该 process 使用掉的 CPU 资源百分比

%MEM:该 process 所占用的物理内存百分比

VSZ :该 process 使用掉的虚拟内存量 (Kbytes)

RSS :该 process 占用的固定的内存量 (Kbytes)

TTY :该 process 是在那个终端机上面运作,若与终端机无关,则显示 ?,另外, tty1-tty6 是本机上面的登入者程序,若为 pts/0 等等的,则表示为由网络连接进主机的程序。

STAT:该程序目前的状态,主要的状态有

R :该程序目前正在运作,或者是可被运作

S :该程序目前正在睡眠当中 (可说是 idle 状态),但可被某些讯号 (signal) 唤醒。

T :该程序目前正在侦测或者是停止了

Z :该程序应该已经终止,但是其父程序却无法正常的终止他,造成 zombie (疆尸) 程序的状态

START:该 process 被触发启动的时间

TIME :该 process 实际使用 CPU 运作的时间

COMMAND:该程序的实际指令


实例:找出与 cron 与 syslog 这两个服务有关的 PID 号码
[root@localhost test6]# ps aux | egrep '(cron|syslog)'
root      2682  0.0  0.0  83384  2000 ?        Sl   Nov02   0:00 /sbin/rsyslogd -i /var/run/syslogd.pid -c 5
root      2735  0.0  0.0  74812  1140 ?        Ss   Nov02   0:00 crond
root     17475  0.0  0.0  61180   832 pts/0    S+   16:27   0:00 egrep (cron|syslog)



按cpu利用率从大到小排列
[root@lamp blog]#  ps -e -o "%C : %p : %z : %a"|sort -nr |head -10
%CPU :    PID : COMMAND
 0.0 :      9 : [khelper]
 0.0 :    945 : /sbin/rsyslogd -i /var/run/syslogd.pid -c 5
 0.0 :    925 : auditd
 0.0 :      8 : [cgroup]
 0.0 :      7 : [events/0]
 0.0 :     79 : [kstriped]
 0.0 :     78 : [kdmremove]
 0.0 :    751 : [kauditd]
 0.0 :    709 : [ext4-dio-unwrit]
查看进程按内存从大到小排列
[root@lamp blog]# ps -e -o "%C : %p : %z : %a" |sort -k5 -nr |head -10
 0.0 :   1323 : 577724 : /usr/sbin/console-kit-daemon --no-daemon
 0.0 :  28080 : 321388 : /usr/sbin/httpd
 0.0 :  28085 : 321380 : /usr/sbin/httpd
 0.0 :  28083 : 321380 : /usr/sbin/httpd
 0.0 :  28087 : 321264 : /usr/sbin/httpd
 0.0 :  28084 : 321264 : /usr/sbin/httpd
 0.0 :  28082 : 321264 : /usr/sbin/httpd
 0.0 :  28081 : 321264 : /usr/sbin/httpd
 0.0 :  28086 : 321256 : /usr/sbin/httpd
 0.0 :  28078 : 320640 : /usr/sbin/httpd