1.1 网卡
1.2 内存
1.2.1 free - 查看系统内存信息
1.2.1.1 使用方式
1.2.1.2 举例说明
(1)查看系统内存
(2)定时查询内存
(3)检查使用超过100m的进程
1.2.2 vmstat - 虚拟内存统计
1.2.2.1 使用方式
1.2.2.2 举例说明
1.2.2.2.1 显示虚拟内存的使用情况
1.2.2.2.2 显示活跃和非活跃内存
1.2.2.2.3 查看内存使用的详细信息
这些信息分别来自于/proc/meminfo,/proc/stat和/proc/vmstat
这些信息主要来自于/proc/diskstats。其中的merged表示一次来自于合并的写/读请求,系统一般会把多个连接/邻近的读/写请求合并到一起来操作。
(5)查看/dev/sda1磁盘的读写统计信息
- reads:来自于该分区的读的次数
- read sectors:来自于该分区的读扇区的次数
- writes:来自于该分区的写的次数
- requested writes:来自于该分区的写请求次数。
1.3 numa
1.4 超线程
1.5 时钟源
1.6 raid
1.7 文件
1.8 磁盘
1.8.1 iostat - I/O信息统计
1.8.1.1 使用方式
1.8.1.2 举例说明
1.8.1.2.1 显示所有设备的负载情况
- 톙: 用户进程消耗的CPU时间百分比
- %nice : 改变过优先级的进程占用的CPU时间百分比
- %system : 系统(内核)进程消耗的CPU时间百分比
- %iowait : IO等待所占用的CPU时间百分比
- %steal : 虚拟机强制CPU等待的时间百分比
- %idle : CPU处在空闲状态的时间百分比
第3~4行中各列的含义如下 - tps : 表示该设备每秒的传输次数,“一次传输”的意思是“一次I/O请求”,多个逻辑请求可能会被合并为“一次I/O请求”,“一次传输”请求的大小是未知的。
- Blk_read/s : 表示每秒读取的数据块数
- Blk_wrtn/s : 表示每秒写入的数据块数
- Blk_read : 表示读取的所有块数
- Blk_wrtn : 表示写入的所有块数
1.8.1.2.2 定时显示所有信息
1.8.1.2.3 只显示磁盘统计信息
1.8.1.2.4 查看扩展信息
- rrqm/s:每秒进行merge的读操作数目
- wrqm/s:每秒进行merge的写操作数目
- r/s:每秒完成的读I/O设备次数
- w/s:每秒完成的写I/O设备次数
- rkB/s:每秒读入的千字节数
- wkB/s:每秒写入的千字节数
- avgrq-sz:设备平均每次进行I/O操作的数据大小(扇区)
- avgqu-sz:平均I/O队列长度
- await:设备平均每次I/O操作的等待时间(毫秒)
- svctm:设备平均每次I/O操作的服务时间(毫秒)
- Փ每秒钟用于I/O操作的百分比
1.8.1.2.5 只查看CPU的统计信息
1.8.2 iotop - 动态显示磁盘I/O统计信息
1.8.2.1 使用方式
1.8.2.2 举例说明
- 不接任何参数启动iotop命令
- Total DISK READ:总的磁盘读取速度
- Total DISK WRITE:总的磁盘写入速度
- TID:进程pid值
- PRIO:优先级
- USER:用户
- DISK READ:磁盘读取速度
- DISK WRITE:磁盘写入速度
- SWAPIN:从swap分区读取数据占用的百分比
- IO:I/O占用的百分比
- COMMAND:消耗I/O的进程名
1.9 sn
1.10 CPU
1.10.1 mpstat - CPU信息统计
1.10.1.1 使用方式
1.10.1.2 举例说明
1.10.1.2.1 显示CPU信息统计
说明 :
第1列:06:13:34 PM,表示当前时间
第2列:CPU,all表示所有CPU,0表示第一个CPU…
后面9列的含义分别如下:
- 瀡户进程消耗的CPU时间百分比。
- %nice:改变过优先级的进程占用的CPU时间百分比
- %sys:系统(内核)进程消耗的CPU时间百分比
- %iowait:IO等待所占用的CPU时间百分比
- %irq:硬中断占用的CPU时间百分比
- %soft:软中断占用的CPU时间百分比
- %steal:虚拟机强制CPU等待的时间百分比
- %guest:虚拟机占用CPU时间的百分比
- %idle:CPU处于空闲状态的时间百分比
1.10.1.2.2 显示指定CPU信息的统计
1.11 sar - 收集系统信息
1.11.1 使用方式
1.11.2 举例说明
1.11.2.1 查看系统CPU的整体负载情况
- 톳用户进程消耗的CPU时间百分比
- %nice:改变过优先级的进程占用的CPU时间百分比
- %system:系统(内核)进程消耗的CPU时间百分比
- %iowait:IO等待所占用的CPU时间百分比
- steal:虚拟机强制CPU等待的时间百分比
- idle:CPU处在空闲状态的时间百分比
1.11.2.2 显示运行队列的大小
- runq-sz:运行队列的长度(等待运行的进程数)
- plist-sz:进程列表中进程(process)和线程(thread)的数量
- ldavg-1:最后一分钟的系统平均负载(system load average)
- ldavg-5:过去5分钟的系统平均负载
- ldavg-15:过去15分钟的系统平均负载
1.11.2.3 显示系统内存的使用状况
- kbmemfree:空闲物理内存量
- kbmemused:使用中的物理内存量
- %memused:物理内存量的使用率
- kbbuffers:内核中作为缓冲区使用的物理内存容量
- kbcached:内核中作为缓存使用的物理内存容量
- kbcommit:应用程序当前使用的内存大小
- %commit:应用程序当前使用的内存大小占总大小的使用百分比
1.11.2.4 显示缓冲区的使用情况
- tps:每秒钟物理设备的I/O传输总量
- rtps:每秒钟从物理设备读入的数据总量
- wtps:每秒钟向物理设备写入的数据总量
- bread/s:每秒钟从物理设备读入的数据量,单位为块/s
- bwrtn/s:每秒钟向物理设备写入的数据量,单位为块/s
1.11.2.5 显示网络的运行状态
(1)查看网络接口信息
- IFACE:网络接口
- rxpck/s:每秒钟接收的数据包
- txpck/s:每秒钟发送的数据包
- rxkB/s:每秒钟接收的字节数
- txkB/s:每秒钟发送的字节数
- rxcmp/s:每秒钟接收的压缩数据包
- txcmp/s:每秒钟发送的压缩数据包
- rxmcst/s:每秒钟接收的多播数据包
(2) 查看网络错误的统计数据
- IFACE:网络接口
- rxerr/s:每秒钟接收的坏数据包
- txerr/s:每秒钟发送的坏数据包
- coll/s:每秒的冲突数
- rxdrop/s:因为缓冲充满,每秒钟丢弃的已接收数据包数
- txdrop/s:因为缓冲充满,每秒钟丢弃的已发送数据包数
- txcarr/s:发送数据包时,每秒载波错误数
- rxfram/s:每秒接收数据包的帧对齐错误数
- rxfifo/s:接收的数据包每秒FIFO过速的错误数
- txfifo/s:发送的数据包每秒FIFO过速的错误数
(3)查看套接字信息
- totsck:使用的套接字总数量
- tcpsck:使用的TCP套接字数量
- udpsck:使用的UDP套接字数量
- rawsck:使用的raw套接字数量
- ip-frag:使用的IP段数量
- tcp-tw:处于TIME_WAIT状态的TCP套接字数量
1.11.2.6 查看系统磁盘的读写性能
- DEV:表示磁盘的设备名称
- tps:表示该设备每秒的传输次数,“一次传输”的意思是“一次I/O请求”,多个逻辑请求可能会被合并为“一次I/O请求”,“一次传输”请求的大小是未知的。
- rd_sec/s:表示每秒从设备读取的扇区数
- wr_sec/s:表示每秒写入设备的扇区数目
- avgrq-sz:设备平均每次I/O操作的数据大小(扇区)
- avgqu-sz:平均I/O队列长度
- await:设备平均每次I/O操作的等待时间(毫秒)
- svctm:设备平均每次I/O操作的服务时间(毫秒)
- Փ每秒钟用于I/O操作的百分比
2.1 docker
2.2 kubernetes
3.1 切屏
3.2 命令行快捷方式
3.3 vim快捷方式
vim编辑方式/vimrc自动加载文件头等操作记录
4.1 进程管理命令
4.1.1 ps - 查看进程
4.1.1.1 使用方式
4.1.1.2 命令输出后第一行参数的解释说明
- ps
- ps -ef
- ps -aux
- 显示指定用户的相关进程信息
- 以详细格式显示进程状态
- 查看某个进程在哪个CPU上运行
4.1.2 kill - 结束进程
4.1.2.1 使用方式
4.1.2.2 举例说明
4.1.2.2.1 列出所有信号的名称
4.1.2.2.2 终止进程
- kill指令默认使用的信号为15,用于结束进程。如果进程忽略此信号,则可以使用信号9强制终止进程。
4.1.3 killall - 通过进程名终止进程
4.1.3.1 使用方式
4.1.3.2 举例说明
4.1.3.2.1 终止定时任务服务进程
4.1.3.2.2 终止指定用户的所有进程
4.1.4 pkill - 通过进程名终止进程
4.1.4.1 使用方式
4.1.4.2 举例说明
4.1.4.2.1 通过进程名终止进程
4.1.4.2.2 通过终端名终止进程
4.1.4.2.3 通过用户名终止进程
4.1.5 top - 实时显示系统中各个进程的资源占用状况
4.1.5.1 使用方式
4.1.5.2 举例说明
4.1.5.2.1 显示进程信息
补充:
1)计算真正可用的内存数为:第四行的free+第四行的buffers+第五行的cached。
2)在对内存进行监控时,要时刻关注top命令里第五行swap交换分区的used,如果这个数值还在不断地变化,则说明内核正在不断进行内存和swap的数据交换,这表示内存真的不够用了或者程序运行有内存溢出问题。
3)在top基本视图中,按键盘数字“1”,可监控每个逻辑CPU的状况,显示多核不同核CPU的信息。
4)直接用top无任何参数的方式查看会非常占用系统的资源。可以使用top -b -n1 > test的方式将数据重定向到文件里,再进行查看。
4.1.5.2.2 将进程按照使用内存排序
4.1.5.2.3 以批处理模式显示进程信息
4.1.5.2.4 显示进程的完整路径
4.1.5.2.5 其他使用补充
4.1.6 nohup - 用户退出系统进程继续工作
4.1.6.1 使用方式
- nohup可以让程序以后台挂起的方式运行,被运行程序的输出信息将不会显示到终端,而是写入到当前目录的nohup.out文件中。如果当前目录的nohup.out文件不可写,则输出重定向到$HOME/nohup.out文件中。
4.1.6.2 举例说明
4.1.7 strace - 跟踪进程的系统调用
4.1.7.1 使用方式
- strace是Linux环境下的一款程序调试工具,用于检查一个应用程序所使用的系统调用以及它所接收的系统信息。strace会追踪程序运行时的整个生命周期,输出每一个系统调用的名字、参数、返回值和执行所消耗的时间等
输出过滤器
4.1.7.2 举例说明
4.1.7.2.1 排查Nginx 403 forbidden错误
先将test.txt文件的内容清空,然后模拟去访问nginx
4.1.7.2.2 只跟踪与文件操作有关的系统调用(使用过滤器)
4.1.7.2.3 通过pid跟踪进程
4.1.7.2.4 跟踪系统调用统计
4.1.7.2.5 重定向输出
4.1.7.2.6 对系统调用进行计时
4.1.8 ltrace - 跟踪进程调用库函数
4.1.8.1 使用方式
ltrace能够跟踪进程的库函数调用,它会显现出调用了哪个库函数,而strace则是跟踪进程的每个系统调用
4.1.8.2 举例说明
(1)ltrace使用
(2)通过pid跟踪进程调用库函数
5.1 tcpdump - 监听网络流量
5.1.1 使用方式
5.1.2 举例说明
5.1.2.1 不加参数运行tcpdump命令监听网络
5.1.2.2 精简输出信息
5.1.2.3 监听指定网卡收到的数据包
命令结果说明:
5.1.2.4 监听指定主机的数据包
5.1.2.5 监听指定端口的数据包
5.1.2.6 监听指定协议的数据包
常见的协议关键字有ip,arp,icmp,tcp,udp等类型
5.1.2.7 利用tcpdump抓包详解tcp/ip连接和断开过程的案例
使用tcpdump对tcp数据进行抓包
数据传输过程:
4次挥手过程: