监控内存
Linux free命令
free指令会显示内存的使用情况,包括实体内存,虚拟的交换文件内存,共享内存区段,以及系统核心使用的缓冲区等
语法
free [-bkmotV][-s <间隔秒数>]
参数说明:
Linux vmstat命令
vmstat命令 的含义为显示虚拟内存状态(“Viryual Memor Statics”),但是它可以报告关于进程、内存、I/O等系统整体运行状态。
语法
vmstat 选项 参数
选项
参数
- 事件间隔:状态信息刷新的时间间隔;
- 次数:显示报告的次数。
实例
字段说明:
Procs(进程)
- r: 运行队列中进程数量,这个值也可以判断是否需要增加CPU。(长期大于1)
- b: 等待IO的进程数量。
Memory(内存)
- swpd: 使用虚拟内存大小,如果swpd的值不为0,但是SI,SO的值长期为0,这种情况不会影响系统性能。
- free: 空闲物理内存大小。
- buff: 用作缓冲的内存大小。
- cache: 用作缓存的内存大小,如果cache的值大的时候,说明cache处的文件数多,如果频繁访问到的文件都能被cache处,那么磁盘的读IO bi会非常小。
Swap
- si: 每秒从交换区写到内存的大小,由磁盘调入内存。
- so: 每秒写入交换区的内存大小,由内存调入磁盘。
注意:内存够用的时候,这2个值都是0,如果这2个值长期大于0时,系统性能会受到影响,磁盘IO和CPU资源都会被消耗。有些朋友看到空闲内存(free)很少的或接近于0时,就认为内存不够用了,不能光看这一点,还要结合si和so,如果free很少,但是si和so也很少(大多时候是0),那么不用担心,系统性能这时不会受到影响的。
IO(现在的Linux版本块的大小为1kb)
- bi: 每秒读取的块数
- bo: 每秒写入的块数
注意:随机磁盘读写的时候,这2个值越大(如超出1024k),能看到CPU在IO等待的值也会越大。
system(系统)
- in: 每秒中断数,包括时钟中断。
- cs: 每秒上下文切换数。
注意:上面2个值越大,会看到由内核消耗的CPU时间会越大。
CPU(以百分比表示)
- us: 用户进程执行时间百分比(user time)
us的值比较高时,说明用户进程消耗的CPU时间多,但是如果长期超50%的使用,那么我们就该考虑优化程序算法或者进行加速。
- sy: 内核系统进程执行时间百分比(system time)
sy的值高时,说明系统内核消耗的CPU资源多,这并不是良性表现,我们应该检查原因。
- wa: IO等待时间百分比
wa的值高时,说明IO等待比较严重,这可能由于磁盘大量作随机访问造成,也有可能磁盘出现瓶颈(块操作)。
- id: 空闲时间百分比
Linux top命令
top命令 可以实时动态地查看系统的整体运行情况,是一个综合了多方信息监测系统性能和运行信息的实用工具。通过top命令所提供的互动式界面,用热键可以管理。
语法
top 选项
选项
top交互命令
在top命令执行过程中可以使用的一些交互命令。这些命令都是单字母的,如果在命令行中使用了-s选项, 其中一些命令可能会被屏蔽。
实例
解释:
- top – 09:44:56[当前系统时间],
- 16 days[系统已经运行了16天],
- 1 user[个用户当前登录],
- load average: 9.59, 4.75, 1.92[系统负载,即任务队列的平均长度]
- Tasks: 145 total[总进程数],
- 2 running[正在运行的进程数],
- 143 sleeping[睡眠的进程数],
- 0 stopped[停止的进程数],
- 0 zombie[冻结进程数],
- Cpu(s): 99.8%us[用户空间占用CPU百分比],
- 0.1%sy[内核空间占用CPU百分比],
- 0.0%ni[用户进程空间内改变过优先级的进程占用CPU百分比],
- 0.2%id[空闲CPU百分比], 0.0%wa[等待输入输出的CPU时间百分比],
- 0.0%hi[],
- 0.0%st[],
- Mem: 4147888k total[物理内存总量],
- 2493092k used[使用的物理内存总量],
- 1654796k free[空闲内存总量],
- 158188k buffers[用作内核缓存的内存量]
- Swap: 5144568k total[交换区总量],
- 56k used[使用的交换区总量],
- 5144512k free[空闲交换区总量],
- 2013180k cached[缓冲的交换区总量],
Linux ps命令
内存使用情况排序:
ps -aux --sort -rss
监控cpu
Linux top命令
top命令 可以实时动态地查看系统的整体运行情况,是一个综合了多方信息监测系统性能和运行信息的实用工具。通过top命令所提供的互动式界面,用热键可以管理。
语法
top 选项
选项
top交互命令
在top命令执行过程中可以使用的一些交互命令。这些命令都是单字母的,如果在命令行中使用了-s选项, 其中一些命令可能会被屏蔽。
实例
解释:
- top – 09:44:56[当前系统时间],
- 16 days[系统已经运行了16天],
- 1 user[个用户当前登录],
- load average: 9.59, 4.75, 1.92[系统负载,即任务队列的平均长度]
- Tasks: 145 total[总进程数],
- 2 running[正在运行的进程数],
- 143 sleeping[睡眠的进程数],
- 0 stopped[停止的进程数],
- 0 zombie[冻结进程数],
- Cpu(s): 99.8%us[用户空间占用CPU百分比],
- 0.1%sy[内核空间占用CPU百分比],
- 0.0%ni[用户进程空间内改变过优先级的进程占用CPU百分比],
- 0.2%id[空闲CPU百分比], 0.0%wa[等待输入输出的CPU时间百分比],
- 0.0%hi[],
- 0.0%st[],
- Mem: 4147888k total[物理内存总量],
- 2493092k used[使用的物理内存总量],
- 1654796k free[空闲内存总量],
- 158188k buffers[用作内核缓存的内存量]
- Swap: 5144568k total[交换区总量],
- 56k used[使用的交换区总量],
- 5144512k free[空闲交换区总量],
- 2013180k cached[缓冲的交换区总量],
Linux mpstat命令
mpstat命令 指令主要用于多CPU环境下,它显示各个可用CPU的状态系你想。这些信息存放在/proc/stat
文件中。在多CPUs系统里,其不但能查看所有CPU的平均状况信息,而且能够查看特定CPU的信息。
语法
mpstat 选项 参数
选项
参数
- 间隔时间:每次报告的间隔时间(秒);
- 次数:显示报告的次数。
表头含义
- %user:表示处理用户进程所使用 CPU 的百分比。
- %nice:表示使用 nice 命令对进程进行降级时 CPU 的百分比。
- %system:表示内核进程使用的 CPU 百分比。
- iowait:表示等待进行I/O所占用CPU时间百分比。
- irq:表示用于处理系统中断的CPU百分比。
- soft:表示用于处理软件中断的CPU百分比。
- idle:CPU的空闲时间百分比。
实例
当mpstat不带参数时,输出为从系统启动以来的平均值。
每2秒产生了2个处理器的统计数据报告:
下面的命令可以每2秒产生了2个处理器的统计数据报告,一共产生三个interval 的信息,然后再给出这三个interval的平均信息。默认时,输出是按照CPU 号排序。第一个行给出了从系统引导以来的所有活跃数据。接下来每行对应一个处理器的活跃状态。。
比较带参数和不带参数的mpstat的结果:
在后台开一个2G的文件
然后在另一个终端运行mpstat命令
上两表显示出当要正确反映系统的情况,需要正确使用命令的参数。vmstat 和iostat 也需要注意这一问题。
Linux vmstat命令
vmstat命令 的含义为显示虚拟内存状态(“Viryual Memor Statics”),但是它可以报告关于进程、内存、I/O等系统整体运行状态。
语法
vmstat 选项 参数
选项
参数
- 事件间隔:状态信息刷新的时间间隔;
- 次数:显示报告的次数。
实例
字段说明:
Procs(进程)
- r: 运行队列中进程数量,这个值也可以判断是否需要增加CPU。(长期大于1)
- b: 等待IO的进程数量。
Memory(内存)
- swpd: 使用虚拟内存大小,如果swpd的值不为0,但是SI,SO的值长期为0,这种情况不会影响系统性能。
- free: 空闲物理内存大小。
- buff: 用作缓冲的内存大小。
- cache: 用作缓存的内存大小,如果cache的值大的时候,说明cache处的文件数多,如果频繁访问到的文件都能被cache处,那么磁盘的读IO bi会非常小。
Swap
- si: 每秒从交换区写到内存的大小,由磁盘调入内存。
- so: 每秒写入交换区的内存大小,由内存调入磁盘。
注意:内存够用的时候,这2个值都是0,如果这2个值长期大于0时,系统性能会受到影响,磁盘IO和CPU资源都会被消耗。有些朋友看到空闲内存(free)很少的或接近于0时,就认为内存不够用了,不能光看这一点,还要结合si和so,如果free很少,但是si和so也很少(大多时候是0),那么不用担心,系统性能这时不会受到影响的。
IO(现在的Linux版本块的大小为1kb)
- bi: 每秒读取的块数
- bo: 每秒写入的块数
注意:随机磁盘读写的时候,这2个值越大(如超出1024k),能看到CPU在IO等待的值也会越大。
system(系统)
- in: 每秒中断数,包括时钟中断。
- cs: 每秒上下文切换数。
注意:上面2个值越大,会看到由内核消耗的CPU时间会越大。
CPU(以百分比表示)
- us: 用户进程执行时间百分比(user time)
us的值比较高时,说明用户进程消耗的CPU时间多,但是如果长期超50%的使用,那么我们就该考虑优化程序算法或者进行加速。
- sy: 内核系统进程执行时间百分比(system time)
sy的值高时,说明系统内核消耗的CPU资源多,这并不是良性表现,我们应该检查原因。
- wa: IO等待时间百分比
wa的值高时,说明IO等待比较严重,这可能由于磁盘大量作随机访问造成,也有可能磁盘出现瓶颈(块操作)。
- id: 空闲时间百分比
Linux ps命令
CPU使用情况排序:
ps -aux --sort pcpu
监控网络
Linux nethogs命令
NetHogs 是一个开源的命令行工具(类似于Linux的top命令),用来按进程或程序实时统计网络带宽使用率。
来自NetHogs项目网站:
NetHogs是一个小型的net top工具,不像大多数工具那样拖慢每个协议或者是每个子网的速度而是按照进程进行带宽分组。NetHogs不需要依赖载入某个特殊的内核模块。如果发生了网络阻塞你可以启动NetHogs立即看到哪个PID造成的这种状况。这样就很容易找出哪个程序跑飞了然后突然占用你的带宽。
本文为你介绍如何在Unix/Linux操作系统下如何安装和使用NetHogs按进程监控网络带宽使用率。
语法
nethogs 选项 参数
选项
其他参数和用法
交互命令
以下是NetHogs的一些交互命令(键盘快捷键)
- m : 修改单位
- r : 按流量排序
- s : 按发送流量排序
- q : 退出命令提示符
安装
在RHEL、CentOS和Fedora下安装NetHogs
要安装NetHogs,你必须要启用你所用Linux下的EPEL源。然后运行下面的yum命令下载安装NetHogs包。
yum install nethogs
在Ubuntu、Linux mint和Debian下安装NetHogs
键入apt-get命令安装NetHogs包:
sudo apt-get install nethogs
常见使用方法:
1、5秒钟展示一次结果:
sudo nethogs -d 5
2、监视设备(eth0)的网络带宽可以使用如下命令:
sudo nethogs eth0
3、同时监视eth0和eth1接口,使用以下命令即可:
sudo nethogs eth0 eth1
Linux iftop命令
iftop命令 是一款实时流量监控工具,监控TCP/IP连接等,缺点就是无报表功能。必须以root身份才能运行。
语法
iftop 选项
选项
界面说明
第一行为带宽,这里为1Mbit,不是字节哦. 连接列表,最后三列分别是2秒,10秒和40秒的平均流量
=>
代表发送<=
代表接收 最后三行表示发送,接收和全部的流量, 第二列为你运行iftop到目前流量,第三列为高峰值,第四列为平均值。
实例
Linux nload命令
nload它是一个实时监控网络流量和带宽使用的控制台应用程序,使用两个图表可视化地展示接收和发送的流量,并提供诸如数据交换总量、最小/最大网络带宽使用量等附加信息
语法
nload 选线 设备
选项
安装
在 CentOS/RHEL/Red Hat/Fedora Linux 上安装 nload
首先在 CentOS 或者基于 RHEL 的操作系统上启用 EPEL 仓库,然后键入 yum 命令安装 nload:
yum install nload
在 Debian 或者 Ubuntu Linux 上安装 nload
键入 apt-get 命令:
sudo apt-get install nload
在 FreeBSD 操作系统上安装 nload
通过 port 安装 nload,键入:
cd /usr/ports/net/nload/ && make install clean
或者添加包
pkg install net/nload
在 OpenBSD 操作系统上安装 nload
键入下列命令:
sudo pkg_add -i nload
在类 Unix 操作系统上从源代码安装 nload
首先,使用 wget 或者 curl 命令获取源代码:
cd /tmp wget http://www.roland-riegel.de/nload/nload-0.7.4.tar.gz
tar xvf nload-0.7.4.tar.gz
使用 cd 命令进入 nload 源代码所在目录:
cd nload*
然后键入 ./configure 为你的操作系统配置安装包:
./configure
运行 configure 命令需要一点时间。完成后,使用 make 命令编译 nload:
make
最后,键入 make install 命令以 root 用户身份安装 nload 应用程序和相关文件:
make install
实例
nload
nload eth0
nload em0 em2
nload 命令一旦执行就会开始监控网络设备,你可以使用下列快捷键操控 nload 应用程序。
- 你可以按键盘上的 ← → 或者 Enter/Tab 键在设备间切换。
- 按 F2 显示选项窗口。
- 按 F5 将当前设置保存到用户配置文件。
- 按 F6 从配置文件重新加载设置。
- 按 q 或者 Ctrl+C 退出 nload。
Linux smokeping 监控网络状态和稳定性
Linux piwik 流量分析系统
监控磁盘
Linux iostat命令
iostat命令 被用于监视系统输入输出设备和CPU的使用情况。它的特点是汇报磁盘活动统计情况,同时也会汇报出CPU使用情况。同vmstat一样,iostat也有一个弱点,就是它不能对某个进程进行深入分析,仅对系统的整体情况进行分析。
语法
iostat 选项 参数
选项
参数
- 间隔时间:每次报告的间隔时间(秒);
- 次数:显示报告的次数。
实例
用iostat -x /dev/sda1
来观看磁盘I/O的详细情况:
详细说明:第二行是系统信息和监测时间,第三行和第四行显示CPU使用情况(具体内容和mpstat命令相同)。这里主要关注后面I/O输出的信息,如下所示:
标示 | 说明 |
---|---|
Device | 监测设备名称 |
rrqm/s | 每秒需要读取需求的数量 |
wrqm/s | 每秒需要写入需求的数量 |
r/s | 每秒实际读取需求的数量 |
w/s | 每秒实际写入需求的数量 |
rsec/s | 每秒读取区段的数量 |
wsec/s | 每秒写入区段的数量 |
rkB/s | 每秒实际读取的大小,单位为KB |
wkB/s | 每秒实际写入的大小,单位为KB |
avgrq-sz | 需求的平均大小区段 |
avgqu-sz | 需求的平均队列长度 |
await | 等待I/O平均的时间(milliseconds) |
svctm | I/O需求完成的平均时间 |
%util | 被I/O需求消耗的CPU百分比 |
Linux haparm命令
hdparm命令 提供了一个命令行的接口用于读取和设置IDE或SCSI硬盘参数。
语法
hdparm(选项)(参数)
选项
参数
设备文件:指定id驱动对应的设备文件名。
实例
显示硬盘的相关设置:
测试硬盘的读取速度:
测试硬盘缓存的读取速度:
检测硬盘的电源管理模式:
查询并设置硬盘多重扇区存取的扇区数,以增进硬盘的存取效率:
附:硬盘坏道修复方法
文章评论
哇!写得很详细,收藏了!