Linux之进程管理(2)相关命令之二

进程监控工具命令使用:uptime  top  vmstat  pmap  dstat

uptime  命令

uptime - Tell how long the system has been running.

显示当前已经运行的时长及cpu核心处理状态

说明:显示系统当前时间,系统运行时长,以及当前上线人数,系统平均负载(一般按1510分钟的平均负载,一般不会超过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表示为平均负载的活动进程数。

注:系统平均负载:

在特定时间间隔内运行队列中的平均进程数,默认为1510分钟之间。

生产环境中的例子:

1、如果每个CPU内存的当前活动进程数不大于3的话,那么系统的性能良好。如果每个CPU内核的任务大于5,那么说此机器的性能有严重问题。

2、如果linux主机是1个双核CPU的话,当Load Average6的时候说明机器已经被充分使用了。

案例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

Linux之进程管理(2)相关命令之二_第1张图片

头部信息解析(前几行关于系统及进程总体数据):

第一行:看到第一行应该熟悉了,同uptime命令输出的系统时长平均负载的等信息。

第二行:显示当前进程的总量和个别程在什么状态(runing, sleeping, stoped, zombie)

注意:总共有340个进程,一般情况下running 都是显示1cpu同一时间段只处理一个进程。而zombie0说明进程运作目前正常,如果不会1就要检查是哪个进程处于僵死状态,并对其进行清除。

第三行:当前 CPU的整体负载,如果是多核心的cpu,可以按数字1来切换成不同CPU的负载率。

例子(1):运行在单核心Cpu上,此时按1Cpu(s)变成了Cpu0

wKioL1fVHgzBHwcqAAANWcnvMAE946.png 

解析:之前此处显示为Cpu(s),现在只显示了Cpu0,表示只要一个核心。

例子(2):运行在双核心Cpu上,按1,会显示多个核心的Cpu数据:

wKioL1fVHhbwmLJdAAAGdd2RlLw968.png 

解析:这里显示了两个Cpu条目,表示为双核心,显示其中各自的运行比例。

 

Cpu后面的每个字段说明:

ususer space 用户运行程序占用CPU的百分比;

sysystem(kernel space)用于运行内核占用的CPU百分比;

ninice用户进程空间所改变过优先级的过程占用CPU的百分比;

ididle空闲CPU百分比;

wawait io 等待I/O花费时间;

hihard ware interrupt 硬件中断占用CPU的百分比;

sisoftware interrupt 软链接中断占用的CPU百分比;

ststolen,被虚拟机“偷走”的百分比;

第四行:表示物理内存的使用情况

第五行:表示交换分区的使用情况

第六行:这里默认显示空白,当在top程序当中输入命令时,显示结果状态的地方,这里可以输入的命令有:

    按条件排序显示

P:根据CPU使用百分比大小进行排序

M:根据CPU使用百分比进行排序

T:根据累计时间进行排序

 

显示和隐藏指定条目:

l:是否显示平均负载和启动时间

t:是否显示CPU状态相关信息

m:是否显示内存(mem)相关信息

c:是否显示完整的命令行(command)信息

操作命令:

q:退出top

k:终止某个进程

 

进程栏位信息列表信息:

wKiom1fVHibQuYZdAAAW03bT_WU559.png 

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  #:指定延迟时长,单位为妙

-bbatch批处理模式显示

-n  #:显示的比例次数

 

 

vmstat 命令

vmstat - Report virtual memory statistics

报告信息流程、内存、分页块IO、陷阱、磁盘和cpu活动。 

命令使用及选项:

vmstat  [options ]  [delay  [count]]

delay   -    更新系统报告的延迟期限,单位为秒

count   -    总共进行几次更新打印,默认不指定为无限循环更新打印

-s   -    直接显示统计数据列表

 

案例介绍:

#直接输入vmstat显示实时信息

[root@localhost ~]# vmstat

wKiom1fVHkLxdVpYAAAOGq0KDsc835.png 

重要信息格式解析:

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

Linux之进程管理(2)相关命令之二_第2张图片 

解析:这里发现内存从硬盘接收数据,就是说明了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

Linux之进程管理(2)相关命令之二_第3张图片 

解析:这里同样显示了si的数据在疯狂提高,说明,内存中正有数据在写入磁盘,也就是所谓的内存数据交换到磁盘。

 

3、显示内存及I/O数据等统计数据列表

[root@localhost ~]# vmstat -s

Linux之进程管理(2)相关命令之二_第4张图片 

 

 

pmap 命令

pmap - report memory map of a process

打印进程对应的映射表(注:也可以打开/proc/PID/map来查看进程对应的映射)

使用方法:

pmap  [options]  pid  ...

         -x :显示所有详细格式信息

 

案例介绍:

#查看crondpid

[root@localhost ~]# ps -C crond -o pid= | tr -cd '[0-9]\n' 
778

#查看crondpid(778)的内存映射信息

[root@localhost ~]# pmap  778

Linux之进程管理(2)相关命令之二_第5张图片 

 

 

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

Linux之进程管理(2)相关命令之二_第6张图片 

 解析:如果不知道更新次数,和vmstat命令一样会无限循环更新,这里显示的内容比vmastat更加丰富,而且支持ps命令里的列出的几种进程类型选项。