linux 性能篇 -- ps的用法
分析:使用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