Linux之进程管理(2)相关命令之二
进程监控工具命令使用:uptime top vmstat pmap dstat
uptime 命令
uptime - Tell how long the system has been running.
显示当前已经运行的时长及cpu核心处理状态
说明:显示系统当前时间,系统运行时长,以及当前上线人数,系统平均负载(一般按1、5、10分钟的平均负载,一般不会超过1)。
选项及用法:
uptime [option]
-p, --pretty : 只显示系统运行时长,以人性化显示
-s, --since : 系统启动时间,yyyy-mm-dd HH:MM:SS格式
注:只有uptime命令版本为3.3.10及支持以上选项,可以使用uptime -V查看当前命令版本。
案例1:
[root@localhost ~]# uptime
15:38:42 up 1:12, 1 user, load average: 0.00, 0.01, 0.05
解析:这里显示当天的15:38:42开启系统,到目前已经运行了1个小时12分钟。同有一个用户登录。load average表示为平均负载的活动进程数。
注:系统平均负载:
在特定时间间隔内运行队列中的平均进程数,默认为1、5、10分钟之间。
生产环境中的例子:
1、如果每个CPU内存的当前活动进程数不大于3的话,那么系统的性能良好。如果每个CPU内核的任务大于5,那么说此机器的性能有严重问题。
2、如果linux主机是1个双核CPU的话,当Load Average为6的时候说明机器已经被充分使用了。
案例2:
#以人性化友好格式只显示系统启动时间
[root@localhost ~]# uptime -p up 1 hour, 33 minutes
#只显示系统的运行时长
[root@localhost ~]# uptime -s 2016-09-09 14:26:01
#其实uptime显示的就是w命令输出的头部
[root@mzf ~]# w 16:14:55 up 18:39, 2 users, load average: 0.00, 0.02, 0.05 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root pts/0 10.1.250.34 05:25 3:51m 0.58s 0.58s -bash root pts/1 10.1.250.34 09:40 0.00s 0.20s 0.00s w
解析:这里w显示的头部信息同样和uptime显示的数据一样,都是显示系统运行时间等。
top 命令
直接输入top命令进入界面,展示信息详解:
[root@mzf ~]# top
头部信息解析(前几行关于系统及进程总体数据):
第一行:看到第一行应该熟悉了,同uptime命令输出的系统时长平均负载的等信息。
第二行:显示当前进程的总量和个别程在什么状态(runing, sleeping, stoped, zombie)。
注意:总共有340个进程,一般情况下running 都是显示1,cpu同一时间段只处理一个进程。而zombie为0说明进程运作目前正常,如果不会1就要检查是哪个进程处于僵死状态,并对其进行清除。
第三行:当前 CPU的整体负载,如果是多核心的cpu,可以按数字1来切换成不同CPU的负载率。
例子(1):运行在单核心Cpu上,此时按1,Cpu(s)变成了Cpu0:
解析:之前此处显示为Cpu(s),现在只显示了Cpu0,表示只要一个核心。
例子(2):运行在双核心Cpu上,按1,会显示多个核心的Cpu数据:
解析:这里显示了两个Cpu条目,表示为双核心,显示其中各自的运行比例。
Cpu后面的每个字段说明:
us:user space 用户运行程序占用CPU的百分比;
sy:system(kernel space)用于运行内核占用的CPU百分比;
ni:nice用户进程空间所改变过优先级的过程占用CPU的百分比;
id:idle空闲CPU百分比;
wa:wait io 等待I/O花费时间;
hi:hard ware interrupt 硬件中断占用CPU的百分比;
si:software interrupt 软链接中断占用的CPU百分比;
st:stolen,被虚拟机“偷走”的百分比;
第四行:表示物理内存的使用情况
第五行:表示交换分区的使用情况
第六行:这里默认显示空白,当在top程序当中输入命令时,显示结果状态的地方,这里可以输入的命令有:
按条件排序显示
P:根据CPU使用百分比大小进行排序
M:根据CPU使用百分比进行排序
T:根据累计时间进行排序
显示和隐藏指定条目:
l:是否显示平均负载和启动时间
t:是否显示CPU状态相关信息
m:是否显示内存(mem)相关信息
c:是否显示完整的命令行(command)信息
操作命令:
q:退出top
k:终止某个进程
进程栏位信息列表信息:
PID:(Process Id)进程的ID
PPID:(Parent Process Pid)父进程ID
RUSER:(Real User Name)进程的所有者真是名称
UID:(User Name)进程所有者名称
GROUP:(User Name)任务所属组名称
TTY:(Controlling Tty)当前在哪个终端上运行
PR :(Priority)优先级
%CPU:(CPU usage):CPU使用率
%MEM:(Memory usage (RES))内存使用率
S:(Process Status):进程状态
TIME+:(CPU Time, Hundredths):CPU时间,精确到秒
使用特定选项让进程信息输出到终端控制台:
top 命令选项:
top [options]
-d #:指定延迟时长,单位为妙
-b:batch批处理模式显示
-n #:显示的比例次数
vmstat 命令
vmstat - Report virtual memory statistics
报告信息流程、内存、分页块IO、陷阱、磁盘和cpu活动。
命令使用及选项:
vmstat [options ] [delay [count]]
delay - 更新系统报告的延迟期限,单位为秒
count - 总共进行几次更新打印,默认不指定为无限循环更新打印
-s - 直接显示统计数据列表
案例介绍:
#直接输入vmstat显示实时信息
[root@localhost ~]# vmstat
重要信息格式解析:
procs:
r:等待运行的进程的个数,和核心数有关
b:处于不可中断睡眠态的进程个数(被阻塞的队列的长度)
memory:
swpd: 交换内存的使用总量
free:空闲物理内存总量
buffer:用于buffer的内存总量
cache:用于cache的内存总量
swap:
si:从磁盘交换进内存的数据速率(kb/s)
so:从内存交换至磁盘的数据速率(kb/s)
io:
bi:从块设备读入数据到系统的速率(kb/s)
bo: 保存数据至块设备的速率
注意:这里的swap并不是指文件系统里的交换内存使用状况,而是内存数据和磁盘数据之间读写的相互转换:
1、证明si内存从磁盘中交换
#下面验证信息,再次打开一个终端连接,使用dd命令将磁盘数据写入到内存:
[root@localhost ~]# dd if=/dev/sda of=/dev/null bs=1024M count=1
#输入此命令之后在另一终端查看vmstat更新属性(每2s更新,更新10次):
[root@localhost ~]# vmstat 2 10
解析:这里发现内存从硬盘接收数据,就是说明了swap中的si表示为内存从磁盘中接收。
2、证明so内存数据交换到磁盘
#同样再次进行dd命令将内存数据写入文件:
[root@localhost ~]# dd if=/dev/zero of=/tmp/tempfile bs=1024M count=1
#再次打开vmstate显示swap信息
[root@localhost ~]# vmstat 2 10
解析:这里同样显示了si的数据在疯狂提高,说明,内存中正有数据在写入磁盘,也就是所谓的内存数据交换到磁盘。
3、显示内存及I/O数据等统计数据列表
[root@localhost ~]# vmstat -s
pmap 命令
pmap - report memory map of a process
打印进程对应的映射表(注:也可以打开/proc/PID/map来查看进程对应的映射)
使用方法:
pmap [options] pid ...
-x :显示所有详细格式信息
案例介绍:
#查看crond的pid
[root@localhost ~]# ps -C crond -o pid= | tr -cd '[0-9]\n' 778
#查看crond的pid(778)的内存映射信息
[root@localhost ~]# pmap 778
dstat 命令
dstat - versatile tool for generating system resource statistics
多功能系统资源生成统计工具(多颜色的字符显示)
使用格式:
dstat [-afv] [options..] [delay [count]]
-c: 显示cpu相关信息
-C #,#,...,total
-d: 显示disk相关信息
-D total,sda,sdb,...
-g:显示page相关统计数据
-m: 显示memory相关统计数据
-n: 显示network相关统计数据
-p: 显示process相关统计数据
-r: 显示io请求相关的统计数据
-s: 显示swapped相关的统计数据
--tcp: 显示tcp相关进程
--udp: 显示udp相关进程
--unix: 显示内核相关进程
--raw: 显示无状态raw进程
--socket: 显示套接字状态
--ipc: 显示ipc信息
--top-cpu:显示最占用CPU的进程
--top-io: 显示最占用io的进程
--top-mem: 显示最占用内存的进程
--top-latency: 显示延迟最大的进程
查看显示:
#每2秒更新一次数据,共显示10次
[root@mzf ~]# dstat 2 10
解析:如果不知道更新次数,和vmstat命令一样会无限循环更新,这里显示的内容比vmastat更加丰富,而且支持ps命令里的列出的几种进程类型选项。