运维常用的命令
iostat
命令用来显示存储子系统的详细信息,通常用它来监控磁盘 I/O 的情况。要特别注意 iostat 统计结果中的 %iowait 值,太大了表明你的系统存储子系统性能低下。
Demo
iostat -d -x 5 3
参数命令解释
- -d 显示设备利用率报告(d == disk)
- -x 显示包括磁盘利用率的扩展统计信
- 5 是取样间隔
- 3 是总的取样次数
输出
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
sda 0.30 310.59 16.98 165.66 2756.39 3809.99 35.95 0.22 1.19 0.49 8.98
dm-0 0.00 0.00 0.71 3.78 13.21 30.22 9.69 0.02 5.45 0.59 0.26
dm-1 0.00 0.00 0.03 0.06 0.26 0.50 8.00 0.01 54.49 0.22 0.00
dm-2 0.00 0.00 14.90 451.17 2589.13 3609.35 13.30 2.68 5.76 0.19 8.72
dm-3 0.00 0.00 0.00 0.00 0.01 0.00 8.00 0.00 1.37 0.65 0.00
dm-4 0.00 0.00 1.72 21.24 153.74 169.92 14.10 2.54 110.74 0.04 0.08
字段解释
- rrqm/s 每秒排队等待到硬盘的读取请求数
- wrqm/s 每秒排队等待到硬盘的写入请求数
- r/s 每秒读取请求的数量
- w/s 每秒写入请求数
- rsec/s 从硬盘每秒读取的扇区数
- wsec/s 写入每秒硬盘的扇区数
- avgrq-sz 发给设备的请求的平均大小(以扇区为单位)
- avgqu-sz 发送到设备的请求的平均队列长度
- await 发给设备的I / O请求的平均时间(以毫秒为单位)。 这包括请求在队列中花费的时间以及为维护请求所花费的时间
- svctm 发送到设备的I / O请求的平均服务时间(以毫秒为单位)
- %util 向设备发出I / O请求的CPU时间百分比(设备的带宽利用率)。 当该值接近100%时发生器件饱和。
free
可让你获取内存的详细信息,你可以使用 cat 和 grep 命令来显示 meminfo 信息
demo
free -m
total used free shared buffers cached
Mem: 63598 63193 405 0 280 7961
-/+ buffers/cache: 54951 8647
Swap: 31863 137 31726
- total:总计物理内存的大小。
- used:已使用多大。
- free:可用有多少。
- Shared:多个进程共享的内存总额。
- Buffers/cached:磁盘缓存的大小。
第三行(-/+ buffers/cached):
- used:已使用多大。
- free:可用有多少。
meminfo
cat /proc/meminfo
可让你获取内存的详细信息,你可以使用 cat 和 grep 命令来显示 meminfo 信息:
mpstat
mpstat是MultiProcessor Statistics的缩写,是实时系统监控工具。其报告与CPU的一些统计信息,这些信息存放在/proc/stat文件中。在多CPUs系统里,其不但能查看所有CPU的平均状况信息,而且能够查看特定CPU的信息。
demo
mpstat
inux 2.6.32-431.el6.x86_64 (mem_name) 2017年01月10日 _x86_64_ (32 CPU)
17时10分39秒 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle
17时10分39秒 all 0.15 0.00 0.06 0.17 0.00 0.00 0.00 0.00 99.63
参数解读
mpstat [-P {|ALL}] [internal [count]]
-P {|ALL} 表示监控哪个CPU, cpu在[0,cpu个数-1]中取值
internal 相邻的两次采样的间隔时间
count 采样的次数,count只能和delay一起使用
当没有参数时,mpstat则显示系统启动以后所有信息的平均值。有interval时,第一行的信息自系统启动以来的平均信息
字段介绍:
-
user 在interval时间段里,用户态的CPU时间(%),不包含 nice值为负 进程 (usr/total)*100
-
nice 在interval时间段里,nice值为负进程的CPU时间(%) (nice/total)*100
-
system 在interval时间段里,核心时间(%) (system/total)*100
-
iowait 在interval时间段里,硬盘IO等待时间(%) (iowait/total)*100
-
irq 在interval时间段里,硬中断时间(%) (irq/total)*100
-
soft 在interval时间段里,软中断时间(%) (softirq/total)*100
-
idle 在interval时间段里,CPU除去等待磁盘IO操作外的因为任何原因而空闲的时间闲置时间(%)(idle/total)*100
-
intr/s 在interval时间段里,每秒CPU接收的中断的次数intr/total)*100
-
CPU总的工作时间=total_cur=user+system+nice+idle+iowait+irq+softirq
-
total_pre=pre_user+ pre_system+ pre_nice+ pre_idle+ pre_iowait+ pre_irq+ pre_softirq
-
user=user_cur – user_pre
-
total=total_cur-total_pre
netstat
显示了大量跟网络相关的信息,例如 socket 的使用、路由、接口、协议、网络等等,下面是一些常用的参数:
可以参考netstat教程
nmon
用以监控 Linux 系统的性能。Nmon 监控多个子系统的性能数据,例如处理器的使用率、内存使用率、队列、磁盘I/O统计、网络I/O统计、内存页处理和进程信息。Nmon 也提供了一个图形化的工具:
你可以在命令行中启动它,然后选择要监控的子系统,这些子系统都对应有一个快捷键,例如输入 c 可查看 CPU 信息,m用于查看内存,d用来查看磁盘信息等,你也可以使用 -f 命令将 nmon 的执行结果保存到一个 CSV 文件中,便于日后分析。
在每日的监控工作中,我发现 nmon 是我最常用的工具。
[图片上传失败...(image-e554b-1529163874942)]
pmap
查看进程内存使用状况
pmap PID 或者 #pmap [options] PID
- -x extended显示扩展格式
- -d device显示设备格式
- -q quiet不显示header/footer行
- -V 显示版本信息
ps
查看占用内存最大的前十个进程
demo
ps -aux --sort -pcpu,+pmem | head -n 10
可以搭配watch
watch -n 1 'ps -aux --sort -pmem, -pcpu | head 20'
sar
sar 该程序包含三个工具:sar 用来显示数据,sa1 和 sa2 用来收集数据并保存。sar 可用来显示 CPU 使用率、内存页数据、网络 I/O 和传输统计、进程创建活动和磁盘设备的活动详情。sar 和 nmon 最大的不同就是 sar 跟适合用作长期的监控,而 nmon 可以让你快速的了解系统当前状态。
strace
strace 经常被认为是程序员调试的工具,但不止如此。它可以记录进程进行系统调用的详情,因此它也是一个非常好的诊断工具,例如你可以使用它来找出某个程序正在打开某个配置文件。Strace 也有一个缺陷,但它在跟踪某个进程时会让该进程的性能变得非常差,因此请谨慎使用
tcpdump
Tcpdump 是一个简单、可靠的网络监控工具,用来做基本的协议分析,看看那些进程在使用网络以及如何使用网络
top
top 命令显示当前的活动进程,默认它是按消耗 CPU 的厉害程度进行排序,每5秒钟刷新一次列表,你也可以选择不同的排序方式,例如 m 是按内存占用方式进行排序的快捷键
vmstat
你可以使用 vmstat 来监控虚拟内存,一般 Linux 上的开发者喜欢使用虚拟内存来获得最佳的存储性能。该命令报告关于内核线程、虚拟内存、磁盘、陷阱和 CPU 活动的统计信息。由 vmstat 命令生成的报告可以用于平衡系统负载活动。系统范围内的这些统计信息(所有的处理器中)都计算出以百分比表示的平均值,或者计算其总和。
watch
是一个非常实用的命令,基本所有的 Linux 发行版都带有这个小工具,如同名字一样,watch 可以帮你监测一个命令的运行结果,省得你一遍遍的手动运行
网友评论