运维必备故障排查、性能分析命令工具,你掌握了几个呢?
运维侠日常的主要工作就是保证业务能够正常稳定的运行,从而使得我们能够流畅的网上冲浪,通宵联盟。在每个应用稳定运行的背后,都离不开程序员的兢兢业业。今天跟大家分享六个平时工作中可以经常使用,能够帮助大家排除解难的命令工具(主要涉及CPU、内存、磁盘、网络、端口、性能等方面)。
TOP1:top 家族
我们总是习惯性的登录系统输入“top”命令来查看系统资源使用情况,它是linux系统在故障排查、性能分析方面无可厚非的top1命令。
通过top命令查看系统的CPU、内存、运行时间、交换分区、执行的线程等信息。通过top命令可以有效的发现系统的缺陷出在哪里。是内存不够、CPU处理能力不够、IO读写过高。
top命令各个输出信息说明:
top 命令参数:
-b 批处理 -c 显示完整的治命令 -I 忽略失效过程 -s 保密模式 -S 累积模式 -i<时间> 设置间隔时间 -u<用户名> 指定用户名 -p<进程号> 指定进程 -n<次数> 循环显示的次数
top家族其他命令:
- top命令,通过top命令可以有效的发现系统的缺陷出在哪里。是内存不够、CPU处理能力不够、IO读写过高。
- iftop命令,iftop是linux命令行程序,用图形形式实时显示网络连接所使用的带宽。
- iotop命令,iotop针对的是系统进程的磁盘读写情况
- atop命令,能够监视 Linux 系统的性能状况,包括进程活动、CPU、内存、硬盘、网络等方面的使用情况等。
- htop命令,可以让用户与之交互的进程查看器。
TOP2:netstat
netstat命令用于查看网络连接情况,系统路由表,系统端口占用情况等,是系统中非常重要的网络查看、网络诊断的命令工具。
常见参数:
-a (all)显示所有选项,默认不显示LISTEN相关 -t (tcp)仅显示tcp相关选项 -u (udp)仅显示udp相关选项 -n 拒绝显示别名,能显示数字的全部转化成数字。 -l 仅列出有在 Listen (监听) 的服務状态 -p 显示建立相关链接的程序名 -r 显示路由信息,路由表 -e 显示扩展信息,例如uid等 -s 按各个协议进行统计 -c 每隔一个固定时间,执行该netstat命令。
提示:LISTEN和LISTENING的状态只有用-a或者-l才能看到
核心使用:
- 查看监听服务端口
列出所有在监听的TCP和UDP端口: netstat -tunpl
- 统计网络连接数
使用netstat和awk命令来统计网络连接数: netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
TOP3:netcat
有着网络界的瑞士军刀美誉,短小精悍、功能实用,是可靠的网络工具。适用于网络连通性测试和端口扫描,机器之间传输文件,机器之间网络测速。
核心使用:
1.网络连通性测试和端口扫描
使用nc启用tcp端口监听 # nc -l 9999 使用telnet测试端口连通 # telnet <主机ip> 9999 使用nmap测试端口连通 # nmap 主机ip -p9999 使用nc测试端口连通 # nc -vzw 2 <主机ip> 9999 使用nc扫描服务端口 # nc -vzw 2 <主机ip> 9999-11000 使用nc启用udp端口监听 # nc -ul 9998
2.使用nc传输文件和目录
两台主机之间怎么快捷、高效的传送文件,相比scp命令,nc命令工具是最优选择。
发送: $ nc 接收者ip 端口号 < 要发送的文件 接收: $ nc -l 端口号 > 要保存的文件名
注: 端口号(1024 ~ 65535)要匹配
3.测试网速
测试网速其实利用了传输文件的原理,就是把来自一台机器的/dev/zero 发送给另一台机器的/dev/null 就是把一台机器的无限个0,传输给另一个机器的空设备上,然后新开一个窗口使用dstat命令监测网速
方法:先启动接收命令方式
步骤1,A机器先启动接收数据的命令,监听自己的9991端口,把来自这个端口的数据都输出给空设备(这样不写磁盘,测试网速更准确)
nc -l 9991 >/dev/null
步骤2,B机器发送数据,把无限个0发送给A机器的9991端口
nc 10.0.1.161 9991 </dev/zero
然后,通过iftop命令分别在A机器和B机器查看当前网速
TOP4:vmstat
vmstat是一个很全面的性能分析工具,可以观察到系统的进程状态、内存使用、虚拟内存使用、磁盘的IO、中断、上下文切换、CPU使用等。
查看每秒输出系统性能状态:
vmstat 1
命令各个输出信息说明:
vmstat命令参数:
-a:显示活跃和非活跃内存 -f:显示从系统启动至今的fork数量 。 -m:显示slabinfo -n:只在开始时显示一次各字段名称。 -s:显示内存相关统计信息及多种系统活动数量。 delay:刷新时间间隔。如果不指定,只显示一条结果。 count:刷新次数。如果不指定刷新次数,但指定了刷新时间间隔,这时刷新次数为无穷。 -d:显示磁盘相关统计信息。 -p:显示指定磁盘分区统计信息 -S:使用指定单位显示。参数有 k 、K 、m 、M ,分别代表1000、1024、1000000、1048576字节(byte)。默认单位为K(1024 bytes)
TOP5:iostat
iostat用于监控系统磁盘的IO性能情况,ostat作为系统级别的IO性能分析工具,也是很常用的一款命令工具。
核心使用命令:
iostat -x -k -d 1
命令各个输出信息说明:
TOP6:telnet
Telnet的使用场景,主要用于测试端口连通性,算是家喻户晓的命令工具。
使用方法:
telnet IP 端口 或者 telnet 域名 端口
Telnet 客户端命常用命令:
open : 使用 openhostname 可以建立到主机的 Telnet 连接。 close : 使用命令 close 命令可以关闭现有的 Telnet 连接。 display : 使用 display 命令可以查看 Telnet 客户端的当前设置。 send : 使用 send 命令可以向 Telnet 服务器发送命令。支持以下命令: 1.ao # 放弃输出命令。 2.ayt # “Are you there”命令。 3.esc # 发送当前的转义字符。 4.ip # 中断进程命令。 5.synch # 执行 Telnet 同步操作。 6.brk # 发送信号。