一 查看系统的性能指标
bash
这里'简略'的将系统'监控指标'分为:cpu、memory、disk、network、os '五大'类
强调: 这'五类'命令的输出与'/proc'虚目录下的'文件信息'强相关
说明: 后续专门讲解'这五大类'的'系统'命令,尽可能'全面罗列'每个工具的使用'场景'
补充: 有些命令是'综合'命令,刻意查看'多种类型'各种'维度'的指标信息
本系列暂时只考虑'操作系统'的性能指标,'不考虑'相关中间件的性能指标
bash
++++++++++++++++++ "<<性能之巅>>" ++++++++++++++++++
bash
类比: '人' 和 '系统'
1、人的组成: 计算机系统的组成
2、衡量'人'健康状况: 系统各项'指标'
① 性能分析的生命周期
② CPU
bash
lscpu、top、nproc、cpulimit、mpstat、'/proc/cpuinfo 文件'
lscpu : 显示CPU '架构' 的有关信息
mpstat : 显示'变化'的CPU数据
③ 内存
bash
free、top、htop、atop、vmstat、memstat、ps、'/proc/meminfo 文件'
ps aux --sort -rss
内存相关的'内核'参数 : '/proc/sys/vm/drop_caches'
动态查看CPU和内存的占用率: ps -ef | grep '进程名' --> 获取 'pid' --> top -p $pid
查看内存占用'前10名'的程序: ps aux|sort -k4,4nr|head -n 10
cat /proc/$pid/status --> 'VmSize对应的值就是物理内存占用'
linux常用内存相关高级命令 linux下查看某一进程占用的内存
free -m 各输出说明 free -m 详解 free 各选项参数 腾讯 free -m 面试
④ 磁盘
bash
df: 用来显示'磁盘空间'的'使用'和'挂载信息'等情况 --> 常用 'df -hT'
du: 显示'对应'目录下每个'子目录和文件'的'磁盘空间'使用量 --> 常用 'du -sh'
补充: ls -lsh /path/to/file
fdisk、parted 、mkfs、mount、umount --> '磁盘分区'、'格式化文件系统'、'挂载'、'卸载'
lsblk: 列出所有'可用块设'备的信息,以及他们之间的'依赖'关系
+++++++++++++ "LVM 逻辑卷" +++++++++++++
pvcreate、vgcreate、lvcreate --> '物理卷'、'卷组'、'逻辑卷'
pvdisplay、vgdisplay、lvdisplay --> 查看 'lvm' 状态信息
lvremove、vgremove、pvremove --> 删除 '逻辑卷'
sync: 强制把'文件系统buff'的内容写入'系统磁盘'
思考: 如何查找'大 [大的标准是什么]'文件?
+++++++++++++ "innode" +++++++++++++
场景:由于每个文件都必须有一个inode,因此有可能发生'inode已经用光',但是硬盘'还未存满'情况
注意: 避免产生'大量'的小文件,导致把'innode'系统资源耗尽
需求1: 只列出文件的'inode number' --> stat --format=%i wzj.txt
需求2: 显示'文件系统inode'的使用信息 --> df -i 分区、'tune2fs -l'、ls -il
bash
+++++++++++++ "磁盘I/O" +++++++++++++
衡量'磁盘性能'的'基本'指标:利用率、饱和度、IOPS、吞吐量、响应时间
sar: sar -d -p 1 2 --> 查看当前'磁盘'性能
iostat: iostat -d -x 1 --> 只提供了观察磁盘的'整体I/O'性能数据
pidstat: pidstat -d 1 --> 查看'哪些进程'行正在读写磁盘
iotop: 刻意按'I/O'大小对进程进行'排序'
fio: 专门测试 'iops' 的命令,对磁盘进行'压力'测试
dd: dd 命令只能'大致 [复制原理]'测出磁盘的 IO 性能,不是非常准确
案例: time dd if=/dev/zero of=test.file bs=1G count=2 oflag=direct
vmstat: vmstat 2 '每2s' -w '宽输出模式' 80 -t '将时间戳附加到每一行' -d '磁盘'
查看系统磁盘I/O的情况 sar命令查看磁盘 磁盘压力测试 vmstat
⑤ 网络
bash
++++++++++++++++ "网络配置类" ++++++++++++++++
1、ip、ifconfig、route、nmcli、hostname、ifdown、ifup、ethtool、netcat、nmtui 图形
++++++++++++++++ "网络测试类" ++++++++++++++++
2、ping、tcping、traceroute、mtr、curl、wget、nc、telnet、dig、nslookup、nmap、arp
说明: '网络'联通性、'域名'解析、'端口'联通性、'远程'连接
补充: scp、rsync、ssh
++++++++++++++++ "网络抓包类" ++++++++++++++++
3、tcpdump、wireshark、tshark
备注: '网络抓包'相关
++++++++++++++++ "网络防火墙规则类" ++++++++++++++++
4、iptables、ipset
备注: 查看和设置'防火墙'规则
反弹shell:控制端监听在某TCP/UDP端口,被控端发起请求到该端口,并将其命令行的输入输出转到控制端
ipset 和 iptables 配合使用 iptables+dnsmasq+ipset联合使用配置方法
⑥ OS
bash
涉及: '端口'、'进程'、'线程'、'pid'、'TCP状态'、'负载'、'文件描述符'
[1]、netstat、ss 'TCP状态'
1、netstat -s --> '统计信息'
2、netstat -antlupe | grep '端口' --> '端口占用'
3、netstat -n | awk '/^tcp/{++s[$NF]} END { for (a in s) print a, s[a] }'
[2]、pid '相关' 信息
ps、lsof、pstree、pidof、pidstat
场景: df -hT 发现'删除了',但是'lsof'查看实际还'占用'
[3]、负载
uptime、top、w
[4]、流量
vnstat、iftop
[5]、'调试' 追踪
strace、gdb、perf
[6]、'java' 相关
jps、jstack、jmap、jhat、pstack
遗留: '软和硬'中断和'网络、磁盘 I/O等待'、上下文切换