哈士奇_部落格

神奇的ps命令详解以及pstree top等管理监控命令

ps:将某个时间点的程序运作情况撷取下来

?

[root@linux ~]# ps aux

[root@linux ~]# ps -lA

[root@linux ~]# ps axjf

参数:

-A :所有的 process 均显示出来,与 -e 具有同样的效用;

-a :不与 terminal 有关的所有 process ;

-u :有效使用者 (effective user) 相关的 process ;

x :通常与 a 这个参数一起使用,可列出较完整信息。

输出格式规划:

l :较长、较详细的将该 PID 的的信息列出;

j :工作的格式 (jobs format)

-f :做一个更为完整的输出。

特别说明:

由于 ps 能够支持的 OS 类型相当的多,所以他的参数多的离谱!

而且有没有加上 - 差很多!详细的用法应该要参考 man ps 喔!

 

范例1:将目前属于您自己这次登入的 PID 与相关信息列示出来

 

?

[root@linux ~]# ps -l

F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD

0 S 0 5881 5654 0 76 0 - 1303 wait pts/0 00:00:00 su

4 S 0 5882 5881 0 75 0 - 1349 wait pts/0 00:00:00 bash

4 R 0 6037 5882 0 76 0 - 1111 - pts/0 00:00:00 ps

 

?

# 上面这个信息其实很多喔!各相关信息的意义为:

# F 代表这个程序的旗标 (flag), 4 代表使用者为 super user;

# S 代表这个程序的状态 (STAT),关于各 STAT 的意义将在内文介绍;

# PID 没问题吧!?就是这个程序的 ID 啊!底下的 PPID 则上父程序的 ID;

# C CPU 使用的资源百分比

# PRI 这个是 Priority (优先执行序) 的缩写,详细后面介绍;

# NI 这个是 Nice 值,在下一小节我们会持续介绍。

# ADDR 这个是 kernel function,指出该程序在内存的那个部分。如果是个 running

# 的程序,一般就是『 - 』的啦!

# SZ 使用掉的内存大小;

# WCHAN 目前这个程序是否正在运作当中,若为 - 表示正在运作;

# TTY 登入者的终端机位置啰;

# TIME 使用掉的 CPU 时间。

# CMD 所下达的指令为何!?

# 仔细看到每一个程序的 PID 与 PPID 的相关性为何喔!上头列出的三个程序中,

# 彼此间可是有相关性的吶!

 

 

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

 

?

[root@linux ~]# ps aux

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND

root 1 0.0 0.1 1740 540 ? S Jul25 0:01 init [3]

root 2 0.0 0.0 0 0 ? SN Jul25 0:00 [ksoftirqd/0]

root 3 0.0 0.0 0 0 ? S< Jul25 0:00 [events/0]

.....中间省略.....

root 5881 0.0 0.3 5212 1204 pts/0 S 10:22 0:00 su

root 5882 0.0 0.3 5396 1524 pts/0 S 10:22 0:00 bash

root 6142 0.0 0.2 4488 916 pts/0 R+ 11:45 0:00 ps aux

 

 

?

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

• PID :该 process 的号码。

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

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

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

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

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

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

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

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

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

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

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

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

• COMMAND:该程序的实际指令为何?

 

 

 

 

范例3:以范例一的显示内容,显示出所有的程序

 

?

[root@linux ~]# ps -lA

F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD

4 S 0 1 0 0 76 0 - 435 - ? 00:00:01 init

1 S 0 2 1 0 94 19 - 0 ksofti ? 00:00:00 ksoftirqd/0

1 S 0 3 1 0 70 -5 - 0 worker ? 00:00:00 events/0

.....以下省略.....

 

 

范例4:列出类似程序树的程序显示

 

?

[root@linux ~]# ps -axjf

PPID PID PGID SID TTY TPGID STAT UID TIME COMMAND

0 1 0 0 ? -1 S 0 0:01 init [3]

1 2 0 0 ? -1 SN 0 0:00 [ksoftirqd/0]

.....中间省略.....

1 5281 5281 5281 ? -1 Ss 0 0:00 /usr/sbin/sshd

5281 5651 5651 5651 ? -1 Ss 0 0:00 \_ sshd: dmtsai [priv]

5651 5653 5651 5651 ? -1 S 500 0:00 \_ sshd: dmtsai@pts/0

5653 5654 5654 5654 pts/0 6151 Ss 500 0:00 \_ -bash

5654 5881 5881 5654 pts/0 6151 S 0 0:00 \_ su

5881 5882 5882 5654 pts/0 6151 S 0 0:00 \_ bash

5882 6151 6151 5654 pts/0 6151 R+ 0 0:00 \_ ps -axjf

 

 

范例5:找出与 cron 与 syslog 这两个服务有关的 PID 号码

?

[root@linux ~]# ps aux | egrep '(cron|syslog)'

root 1539 0.0 0.1 1616 616 ? Ss Jul25 0:03 syslogd -m 0

root 1676 0.0 0.2 4544 1128 ? Ss Jul25 0:00 crond

root 6157 0.0 0.1 3764 664 pts/0 R+ 12:10 0:00 egrep (cron|syslog)

 

在预设的情况下, ps 仅会列出与目前所在的 bash shell 有关的 PID 而已,所以, 当我使用 ps -l 的时候,只有三个 PID (范例一)。






pstree命令详解

pstree显示进程状态树

作用:pstree命令列出当前的进程,以及它们的树状结构。
用法:pstree [选项] [pid|user]

-a:显示执行程序的命令与完整参数。
-c:取消同名程序,合并显示。
-h:对输出结果进行处理,高亮显示正在执行的程序。
-l:以长用法显示。
-n:以PID大小排序。
-p:显示PID。
-u:显示UID信息。

说明:使用ps命令得到的数据精确,但数据庞大,这一点对掌握系统整体概况来说是不容易的。pstree命令正好可以弥补这个缺憾。它能将当前的执行程序以树状结构显示。pstree命令支持指定特定程序(PID)或使用者(USER)作为显示的起始。

常用命令

#pstree 、pstree | grep java 、 pstree | less

pestree命令对程序名称相同的会自动合并,所有“java───69*[{java}]”即表示系统中有69个java进程产生的子进程。
init─┬─acpid
     ├─atd
     ├─auditd─┬─audispd───{audispd}
     │        └─{auditd}
     ├─automount───4*[{automount}]
     ├─avahi-daemon───avahi-daemon
     ├─crond
     ├─dbus-daemon
     ├─events/0
     ├─events/1
     ├─gam_server
     ├─gpm
     ├─hald───hald-runner───hald-addon-acpi
     ├─hcid
     ├─hidd
     ├─irqbalance
     ├─java───69*[{java}]
     ├─java───30*[{java}]
  ……

#pstree -pua  显示带pid uid 及程序命令完整参数
top命令

作用:能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。

常用命令

#top

top - 14:42:17 up 211 days, 18:13,  1 user,  load average: 2.56, 2.85, 2.79
Tasks: 177 total,   1 running, 176 sleeping,   0 stopped,   0 zombie
Cpu(s): 33.8%us,  1.8%sy,  0.0%ni, 64.1%id,  0.2%wa,  0.0%hi,  0.1%si,  0.0%st
Mem:  16429688k total, 14910792k used,  1518896k free,   735872k buffers
Swap: 12289684k total,      284k used, 12289400k free,  6368068k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                                            
 9453 root      23   0 7068m 449m  10m S 100.2  2.8 872:46.54 java                                                                                                              
32024 root      19   0 7099m 634m  11m S 100.2  4.0 885:12.07 java                                                                                                              
31939 mysql     15   0 4307m 892m 5464 S 79.2  5.6 189:50.44 mysqld                                                                                                             
15057 root      23   0 7388m 3.1g  11m S  4.7 19.8  40:44.23 java                                                                                                               
14965 www       15   0 84868  31m 1076 S  0.3  0.2   0:13.45 nginx                                                                                                              
1 root      15   0 10348  624  532 S  0.0  0.0   0:57.89 init                                                                                                               
2 root      RT  -5     0    0    0 S  0.0  0.0   0:49.27 migration/0                                                                                                        
3 root      34  19     0    0    0 S  0.0  0.0   0:00.45 ksoftirqd/0                                                                                                        
4 root      RT  -5     0    0    0 S  0.0  0.0   0:00.00 watchdog/0                                                                                                         
5 root      RT  -5     0    0    0 S  0.0  0.0   0:33.37 migration/1                                                                                                        
6 root      34  19     0    0    0 S  0.0  0.0   0:00.37 ksoftirqd/1  

统计信息区
前五行是系统整体的统计信息。第一行是任务队列信息,同 uptime 命令的执行结果。其内容如下:

14:42:17 当前时间
211 days, 18:13 系统运行时间,格式为时:分
1 user 当前登录用户数
load average: 2.56, 2.85, 2.79 系统负载,即任务队列的平均长度。
三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值。

第二、三行为进程和CPU的信息。当有多个CPU时,这些内容可能会超过两行。内容如下:

Tasks: 177 total 进程总数
1 running 正在运行的进程数
176 sleeping 睡眠的进程数
0 stopped 停止的进程数
0 zombie 僵尸进程数
Cpu(s): 33.8% us 用户空间占用CPU百分比
1.8% sy 内核空间占用CPU百分比
0.0% ni 用户进程空间内改变过优先级的进程占用CPU百分比
64.1% id 空闲CPU百分比
0.0% wa 等待输入输出的CPU时间百分比
0.0% hi
0.1% si
0.0% st

最后两行为内存信息。详细介绍可以参考:Linux基础(2)-系统常用命令(操作系统、内核、cpu、内存) 的内存部分介绍。

进程信息区

列描述
PID            进程的进程ID
USER          运行该进程的用户
PRI           进程的优先级
NI             nice值:该值越高,任务的优先级越低
SIZE          该进程使用的内存(代码+数据+堆栈)
RSS           该进程使用的物理内存
SHARE         该进程使用的共享内存
STAT  该进程的状态,用代码显示。一些主要的状态代码包括:
R— 正在运行
S— 正在休眠
Z— 迟滞
T— 已停止

您还会看到第二个和第三个字符,它们表示:
W— 已换出的进程
N— 正nice值
%CPU          该进程使用的CPU百分比
%MEM          该进程使用的内存百分比
TIME          该进程使用的总CPU时间
CPU           如果这是一个多处理器系统,该列指明正在其上运行进程的CPU的ID。
COMMAND        该进程发出的命令
常用命令
top -d 2    每两秒更新一次       
top -d 2 -p10604   观看某个PID
top -b -n 2 > /tmp/top.txt top的内容进行2次,然后输出到/tmp/top.txt   
  








top 的交互式命令

 下面介绍在top命令执行过程中可以使用的一些交互命令。从使用角度来看,熟练的掌握这些命令比掌握选项还重要一些。这些命令都是单字母的,如果在命令行选项中使用了s选项,则可能其中一些命令会被屏蔽掉。
  Ctrl+L 擦除并且重写屏幕。
  h或者? 显示帮助画面,给出一些简短的命令总结说明。
  k 终止一个进程。系统将提示用户输入需要终止的进程PID,以及需要发送给该进程什么样的信号。一般的终止进程可以使用15信号;如果不能正常结束那就使用信号Array强制结束该进程。默认值是信号15。在安全模式中此命令被屏蔽。
  i 忽略闲置和僵死进程。这是一个开关式命令。
  q 退出程序。
  r 重新安排一个进程的优先级别。系统提示用户输入需要改变的进程PID以及需要设置的进程优先级值。输入一个正值将使优先级降低,反之则可以使该进程拥有更高的优先权。默认值是10。
  S 切换到累计模式。
  s 改变两次刷新之间的延迟时间。系统将提示用户输入新的时间,单位为s。如果有小数,就换算成m s。输入0值则系统将不断刷新,默认值是5 s。需要注意的是如果设置太小的时间,很可能会引起不断刷新,从而根本来不及看清显示的情况,而且系统负载也会大大增加。
  f或者F 从当前显示中添加或者删除项目。
  o或者O 改变显示项目的顺序。
  l 切换显示平均负载和启动时间信息。
  m 切换显示内存信息。
  t 切换显示进程和CPU状态信息。
  c 切换显示命令名称和完整命令行。
  M 根据驻留内存大小进行排序。
  P 根据CPU使用百分比大小进行排序。
  T 根据时间/累计时间进行排序。
W 将当前设置写入~/.toprc文件中。这是写top配置文件的推荐方法。

posted on 2012-07-25 11:03 拉风 阅读(1764) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2012年7月>
24252627282930
1234567
891011121314
15161718192021
22232425262728
2930311234

导航

统计

常用链接

留言簿

随笔档案

搜索

最新评论

阅读排行榜

评论排行榜