专业知识 | 知识总结 | Linux 操作系统知识地图

接受我们的有限,去迎接未知的无限;
让每个今天,都能听到永恒的回声。

目录

专业知识 | 知识总结 | Linux 操作系统知识地图

在这里插入图片描述

01 | 基础知识体系

1.1 基础篇

1.1.1 Linux 版本
1.1.1.1 内核版本格式
  • 1.xx.yy.zz(xx:主版本;yy:次版本;zz:末版本);
  • 2.小于 2.6 版本(次版本奇数为开发板,次版本偶数为稳定版);
  • 3.大于 2.6版本(longterm:长期支持版本;stable:稳定版本;mainline:主线开发版本)
1.1.1.2 常见发行版本
  • 1.Red Hat
  • 2.Ubuntu
  • 3.Centos
  • 4.Debian
  • 5.Fedora
1.1.2 Linux 下的 root 账号和“/”目录
  • 1.root 账号:对应 Windows 系统的管理员账号;
  • 2.“/”根目录:对应 Windows 系统的“我的电脑”。

1.2 系统操作篇

1.2.1 终端和帮助命令
1.2.1.1 使用终端
  • 1.命令提示符($:普通用户;#:root 用户);
  • 2.命令和路径补全:tab 键;
  • 3.命令的分类(使用 type 查看某个命令的所属分类:内部命令/外部命令)。
1.2.1.2 帮助命令
  • 1.man (man xxx;man 1 man);
  • 2.help(help xxx;xxx --help);
  • 3.info(info xxx)。
1.2.2 文件与目录管理
1.2.2.1 文件与目录查看命令:ls
  • -l(小写L):显示文件的详细信息;
  • -a:显示隐藏文件;
  • -r:逆序显示;
  • -t:按时间排序;
  • -R:递归显示。
1.2.2.2 路径操作(分绝对路径和相对路径)
  • cd:进入制定路径;
  • pwd:显示当前路径。
1.2.2.3 建立与删除目录
  • mkdir:新建目录;
  • rmdir:删除空目录。
1.2.2.4 通配符
  • *:匹配任意字符;
  • ?:匹配单个字符;
  • [xyz]:匹配 xyz 任意一个字符;
  • [a-z]:匹配字符范围;
  • [!xyz]或[^xyz]:匹配不在 xyz 中的任意字符。
1.2.2.5 复制文件:cp
  • -r:复制目录;
  • -p:保留用户权限时间;
  • -a:尽可能保留原始文件的属性等同于 -dpR。
1.2.2.6 删除文件:rm
  • -r:递归删除;
  • -f:不提示。
1.2.2.7 移动与重命名:mv
  • 移动文件:mv file 1 dir1/
  • 重命名文件:mv file1 file2。
1.2.2.8 文本查看
  • head:显示文件前 n 行;
  • tail:显示结尾 n 行;
  • cat:-f(参数可以显示文件更新信息);查看文件(文件内容过长时不建议使用 cat 直接查看);
  • wc:统计文件行数。
1.2.2.9 打包和压缩

tar

  • 1.打包命令;
  • 2.扩展名 .tar;
  • 3.配合 gzip 和 bzip2 可以使用打包和压缩功能。

gzip

  • 1.压缩与解压缩命令;
  • 2.扩展名 .gz。

bzip2

  • 1.压缩与解压缩命令;
  • 2.扩展名 .bz2。
1.2.2.10 vim 编辑器

正常模式

  • 1.v V ctrl+v 进入可视化模式;
  • 2.: 进入命令模式;
  • 3.esc: 回到正常模式;

命令模式

  • 1.h j k l 上下左右;
  • 2.yy y$ 复制;
  • 3.dd d$ 剪切;
  • 4.p 粘贴;
  • 5.u 撤销命令;
  • 6.ctrl + r 重做命令;
  • 7.x 删除单个字符;
  • 8.r 替换单个字符;
  • 9.G 定位指定的行;
  • 10.^$ 定位到行的开头和结尾;
  • 11.w 写入文件;
  • 12.w 文件名:另存文件;
  • 13.q 退出;
  • 14.q! 不保存退出;
  • 15.!cmd 执行命令;
  • 16./ 查找命令;
  • 17.s/old/new/ 替换命令;
  • 18.set nu 设置命令。

插入模式

  • 1.iIoOaA:进入插入模式;、
  • 2.i 在当前光标位置进入插入模式;
  • 3.I 移动到当前光标的行首,进入插入模式;
  • 4.a 在当前光标位置之后进入插入模式;
  • 5.A 移动到当前目标所在行尾,进入到插入模式;
  • 6.o 在当前光标下一行进入插入模式;
  • 7.O 在当前光标上一行进入插入模式。

可视模式

  • 1.v 字符可视模式;
  • 2.V行可视化模式;
  • 3.ctrl + v 块可视化模式。
1.2.2.11 用户管理

用户命令

  • 1.常用用户命令(useradd 添加用户、userdel 删除用户、passwd 设置用户密码、usermod 修改用户信息、groupadd 添加用户组、groupdel 删除用户组);
  • 2.用户与用户组的概念;
  • 3.用户的家目录:/home/用户名;
  • 4.以管理员身份运行(su 切换当前用户身份;sudo 用 root 用户身份执行某条命令;visudo 修改 sudo 命令的配置文件)。

用户配置文件

  • 1./etc/passwd 用户信息配置文件;
  • 2./etc/shadow 用户密码信息配置文件。
1.2.2.12 权限管理

权限的表示方法

  • 1.一般权限的表示方法:r/w/x;
  • 2.文件权限与目录权限格式相同,但功能不同(文件权限、目录权限、特殊权限);
  • 3.权限相关命令(chmod:修改权限;chown:更改属性、属组;chgrp:可以单独更改属组,不常用)。

1.3 系统管理篇

1.3.1 正则表达式
1.3.1.1 定义
  • 对字符串操作的一组逻辑公式;用于对符合规则的字符串进行查找和替换。
1.3.1.2 初识元字符
  • ^、$、*。
1.3.1.3 扩展元字符
1.3.2 文本与文件查找
1.3.2.1 grep
  • -i:忽略大小写;
  • -v:反转;
  • -a:处理二进制文件;
  • -R:递归方式。
1.3.2.2 find
  • -name:按照文件名搜索;
  • -perm:按照权限搜索;
  • -user:按照属主搜索;
  • -type:按照文件类型搜索。
1.3.3 网络配置
1.3.3.1 网络配置命令
  • 1.ifconfig:查看和配置网络接口;
  • 2.ip:查看和配置网络接口、路由;
  • 3.netstat:查看进程监听端口状态;
  • 4.network 与 NetworkManager:网络管理脚本。
1.3.3.2 配置文件
  • 1.ifcfg-eth0 eth0:网卡配置文件;
  • 2.networking:主机名配置文件;
  • 3.resolv.conf:域名配置文件。
1.3.4 软件安装于更新
1.3.4.1 rpm 安装
  • -i:安装;
  • -q:查询;
  • -U:升级;
  • -e:卸载;
1.3.4.2 yum 安装
  • 1.安装:yum install xxx(软件名);
  • 2.卸载:yum remove xxx;
  • 3.更新:yum update xxx。
1.3.4.3 源代码编译安装
  • 1…/config
  • 2.make
  • 3.make install。
1.3.5 防火墙
1.3.5.1 SELinux

1.访问控制方式分类

  • DAC:自主访问控制;
  • MAC:强制访问控制。

2.常用命令

  • getenforce:查看 SELinux 状态;
  • setenforce:修改访问状态。

3.配置文件

  • /etc/selinux/config
  • enforce:强制控制
  • permissive:通知但不强制控制;
  • disable:禁用访问控制。
1.3.5.2 iptables

1.表

  • filter:用于过滤;
  • nat:用于地址装换。

2.链

  • INPUT:进入主机方向;
  • OUTPUT:本主机发出方向;
  • FORWORD:转发方向;
  • PREROUTING:路由前转换;
  • POSTROUTING:路由后转换。

3.选项

  • -i -o 接口
  • -s -d IP地址 / 子网掩码
  • -p tcp/udp 指定协议
  • -j 动作
1.3.5.3 tcpdump

1.保存和读取规则

  • -r filename:从文件读取已抓取的数据包;
  • -w filename:将抓取的数据包保存至文件。

2.常用选项

  • -v:显示详细信息;
  • -n:不将 IP 地址解析为主机名;
  • -i:接口;
  • host:主机;
  • port:端口。
1.3.6 服务与日志
1.3.6.1 服务状态的查看命令
  • service:service 服务名称 stat | stop | restat | status
  • systemctl start | stop | restart | status 服务名称.service
1.3.6.2 服务配置文件的编写
1.3.6.3 常用系统日志
  • /var/log:系统日志默认目录;
  • message:系统日志;
  • dmesg:内核启动日志;
  • secure:安全日志。
1.3.6.4 应用程序日志
1.3.7 磁盘分区
1.3.7.1 链接文件
  • 符号链接;
  • 硬链接。
1.3.7.2 mount 挂载命令
  • -t:文件系统类型;
  • -o:挂载选项(ro:只读挂载;rw:只写挂载;remount:重挂载)。
1.3.7.3 配置文件 /etc/fstab
1.3.8 文件系统
1.3.8.1 常用命令
  • fdisk:分区工具(-l:查看分区信息;fdisk/dev/sdx:为某一个存储分区)。
  • df:查看分区使用空间大小;
  • du:查看文件夹使用空间大小;
  • mkfs:格式化命令(mkfs.ext4:格式化为 ext4 文件系统;mkfs.xfs:格式化为 XFS 文件系统)。
1.3.8.2 ext4
1.3.9 逻辑卷与 LVM
1.3.9.1 LVM 分层
  • 1.PV:物理卷;
  • 2.VG:卷组;
  • 3.LV:逻辑卷。
1.3.9.2 常用命令
  • pvcreate:建立 PV;
  • pvs:查看 pv;
  • vgcreate:建立 VG;
  • lvcreate:建立 LV;
  • lvextend:扩展 LV;
  • vgs:查看 VG;
  • lvs:查看 LV。
1.3.9.3 卷用于分层管理磁盘
1.3.10 系统启动过程与故障修复
1.3.10.1 系统启动过程简述
  • 1.BIOS:选择启动设备;
  • 2.MBR:硬盘可引导扇区;
  • 3.GRUB Linux:系统可引导工具;
  • 4.内核;
  • 5.init 或 systemd;
  • 6.service 服务或 systemd 服务(Centos 7 以前为 init,Centos 7 以前仅有 service 服务);
  • 7.启动 tty 等待用户登陆。
1.3.10.2 更新内核版本
  • 1.RPM 方式更新(安装速度快,没有最新的版本);
  • 2.源代码编译方式更新(可以使用最新的版本,编译时间较长)。

1.4 Shell 篇

1.4.1 认识 BASH
1.4.1.1 定义
  • Shell 是命令行解释器,翻译用户的命令给内核执行,并将结果返回给用户。
1.4.1.2 Shell 脚本的用处
  • 1.组合系统命令实现自动化功能;
  • 2.组成脚本的基本元素是命令,不用深入掌握系统函数库。
1.4.1.3 内建命令与外部命令
  • 1.内建命令不会创建子进程,但是对于 shell 无效;
  • 2.外部命令会创建子进程。
1.4.2 管道与重定向
1.4.2.1 管道符 |
1.4.2.2 重定向符号
  • <:输入重定向;
  • :输出重定向;

  • :输出重定向,追加方式。

1.4.2.3 sort 对文本进行排序
1.4.2.4 join 连接两个字符串
1.4.3 进程与内存的查看与调整
1.4.3.1 进程查看命令
  • ps top:对当前系统的进程信息进行查看。
1.4.3.2 内存查看命令
  • free:查看系统的内存使用率;sar:显示系统的运行状态,用于故障排除。
1.4.3.3 常用的第三方系统状态查看命令
  • iftop:查看某一进程的网络流量。
1.4.4 变量与环境变量
1.4.4.1 变量的定义
  • Shell 变量无需声明;
  • 销毁变量:unset 变量名。
1.4.4.2 变量的赋值
  • 变量名 = 变量值。
1.4.4.3 环境变量
  • PATH:命令解释器路径。
1.4.4.4 环境变量的配置文件
  • /etc/profile:系统环境变量默认保存文件;
  • /etc/bashrc login shell:执行初始化的配置文件。
1.4.5 转义与引用
1.4.5.1 特殊符号
1.4.5.2 转义符 /
1.4.5.3 引用符号
  • 单引号’ ';双引号" "。
1.4.6 循环
1.4.6.1 while 循环
  • while 循环根据 while 判断结果确定是否继续执行;
  • 判断的结果为命令的返回值,如果为 0 则循环会继续执行;
  • 如果判断结果一直为真“0”,无法到达循环结束称作死循环。
1.4.6.2 for 循环
  • Shell 的 for 循环使用遍历方式,for…in…格式
  • for 循环支持 C 语言写法,需要使用 (()) 格式;
  • 支持使用 break、continue 对循环进行控制;
  • for 循环支持嵌套使用。
1.4.7 函数
1.4.7.1 函数的定义
  • 函数是对重复利用的代码进行封装;
  • 函数的定义方法是:函数名(){}。
1.4.7.2 函数的使用
  • 使用函数的方式是直接使用:函数名。
1.4.8 计划任务
1.4.8.1 一次性计划任务 at
1.4.8.2 周期性计划任务 cron
  • 查看周期性计划任务:crontab -l;
  • 编辑周期性计划任务:crontab -e。
1.4.9 运算符
1.4.9.1 运算符号
  • (+ - * / % 加 减 乘 除 取余)
1.4.9.2 shell 的弊端
  • 支持整数运算,但和编译语言比起来效率很低;
  • 对浮点运算支持不好。
1.4.10 测试与判断
1.4.10.1 test 测试
  • 可以书写为 [];
  • 可以使用 [[]] 扩展格式;
  • 文件测试;
  • 数字比较。
1.4.10.2 if 判断
  • 基本原理:根据命令的返回值是否为 0;进行分支判断;
  • 支持 if…else 写法;
  • 支持 if 嵌套写法。
1.4.10.3 case 分支
  • case 分支一般作为 if 判断的补充;
  • case 分支的结束符号是“;;”,它是 ";"的转义形式。

1.5 文本操作篇

1.5.1 正则表达式与文本搜索
1.5.1.1 元字符大全
  • .单个字符;
  • *一个(包括零个)它前面的字符;
  • […] 匹配方括号中的任意字符;
  • ^ 匹配行开始;
  • $ 匹配行结束;
  • \ 转义特殊字符;
  • {…} 匹配出现的次数;
  • +匹配前面的正则表达式出现一次或多次;
  • ?匹配前面的正则表达式出现零次或一次;
  • | 并列匹配;
  • () 分组;
  • POSIX 字符类。
1.5.2 sed
1.5.2.1 sed 基础

基本语法

  • sed ‘cmd’ filename
  • sed -e ‘cmd’ -e ‘cmd’ filename
1.5.2.2 sed 基础命令
  • s:替换;d:删除;a:追加;i:插入;c:更改;n:下一步;r:读文件;w:写文件;q:退出;y:替换;p:打印。
1.5.2.3 sed 高级命令

多行命令

  • N:将多行追加到模式空间进行处理;
  • D:删除多行模式空间的第一个字符至第一个换行符,并返回脚本的开头执行;
  • P:输出模式空间中的第一个字符至第一个换行符。

保持空间模式

  • h:将模式空间中的内容存储至保存空间,并覆盖保持空间的内容;
  • H:将模式空间中的内容存储至保存空间,并追加到保持空间的内容;
  • g:将保持空间的内容存储至模式空间,并覆盖模式空间的内容;
  • G:将保持空间的内容存储至模式空间,并追加到模式空间;
  • x:交换模式空间和保持空间的内容。

条件与分支

  • :标签;
  • b branch:命令用于在脚本中将控制权转移到另一行,如果没有指定标签就转移到脚本的结尾;
  • t 测试命令,如果当前匹配地址的行进行了成功替换,test 命令就会转到标签处,如果没有指定标签就转移到标签的结尾。
1.5.3 AWK
1.5.3.1 AWK 的工作方式
  • BEGIN{} 模式用于处理文件的预处理;
  • {} 模式用于对文件每行进行处理;
  • END{} 模式用于处理完文件之后的操作。
1.5.3.2 运算符
  • 算数运算符;
  • 关系运算符;
  • 布尔运算符。
1.5.3.3 循环
  • 支持 while 循环;
  • 支持 for 循环;
  • 支持 break、continue。
1.5.3.4 系统变量
  • FS:字段分隔符;
  • OFS:输出字段分隔符;
  • RS:记录分隔符;
  • ORS:输出记录分隔符。
1.5.3.5 条件
  • 和 C 语言用法相似;
  • 语法格式为:if(判断);
  • 支持 if…else…用法;
  • 支持 if 嵌套。
1.5.3.6 函数
  • 算数函数;
  • 随机函数;
  • 字符串函数。

02 | 性能优化实战

2.1 常见性能指标以及 USE 法分类

2.1.1 CPU 指标性能
2.1.1.1 CPU 使用率
  • 用户 CPU、系统 CPU、IOWAIT、软中断、硬中断、窃取 CPU、客户 CPU。
2.1.1.2 CPU 上下文切换
  • 自愿上下文切换,非自愿上下文切换。
2.1.1.3 平均负载
2.1.1.4 CPU 缓存命中率
2.1.2 内存性能指标
2.1.2.1 系统内存指标
  • 已用内存;
  • 剩余内存;
  • 可用内存;
  • 缺页异常(主缺页异常/次缺页异常);
  • 缓存/缓冲区:使用量/命中率;
  • Slabs。
2.1.2.2 进程内存指标
  • 虚拟内存(VSS);
  • 常驻内存(RSS);
  • 按比例分配共享内存后的物理内存(PSS);
  • 独占内存(USS);
  • 共享内存;
  • SWAP 内存;
  • 缺页异常(主缺页异常/次缺页异常)。
2.1.2.3 SWAP
  • 已用空间;
  • 剩余空间;
  • 换入速度;
  • 换出速度;
2.1.3 I/O 性能指标
2.1.3.1 文件系统
  • 存储空间容量、使用量以及剩余空间;
  • 索引节点 容量、使用量以及剩余量;
  • 缓存(页缓存、目录项缓存、索引节点缓存、具体文件系统缓存(ext4 的缓存));
  • IOPS:文件 I/O;
  • 响应时间(延迟);
  • 吞吐量(B/s)。
2.1.3.2 磁盘
  • 使用率;
  • IOPS;
  • 吞吐量(B/s);
  • 响应时间(延迟);
  • 缓冲区;
  • 相关因素(读写类型:如顺序还是随机;读写比例;读写大小;存储类型:如 RAID 级别、本地还是网络)。
2.1.4 网络性能指标
2.1.4.1 应用层
  • QPS(每秒请求数);
  • 套接字缓冲区大小;
  • DNS 解析延迟;
  • 响应时间;
  • 错误数。
2.1.4.2 传输层
  • TCP 连接数;
  • 连接跟踪数;
  • 重传数;
  • 丢包数;
  • 延迟。
2.1.4.3 网络层
  • 丢包数;
  • TTL;
  • 拆包。
2.1.4.4 链路层
  • PPS(每秒网络帧数);
  • BPS(每秒字节数);
  • 丢包数;
  • 错误数。
2.1.5 常见指标分类(USE 法)
资源类型性能指标
CPU使用率CPU 使用率
CPU饱和度运行队列长度或平均负载
CPU错误数硬件 CPU 错误数
内存使用率已用内存百分比或 SWAP 用量百分比
内存饱和度内存换页量
内存错误数内存分配失败或OOM
存储设备 I/O使用率设备 I/O 时间百分比
存储设备 I/O饱和度等待队列长度或延迟
存储设备 I/O错误数I/O 错误数
文件系统使用率已用容量百分比
文件系统饱和度已用容量百分比
文件系统错误数文件读写错误数
网络使用率宽带使用率
网络饱和度重传报文数
网络错误数网卡收发错误数、丢包数
文件描述符使用率已用文件描述符百分比
连接跟踪使用率已用连接跟踪百分比
连接数饱和度TIMEWAIT 状态连接数

2.2 常见性能工具

2.2.1 CPU 性能工具
性能指标性能工具说明
平均负载uptime、top、/proc/loadavguptime 最简单;top 提供了更全的指标;/proc/loadavg 常用于监控系统
系统 CPU 使用率vmstat、mpstat、top、sar、/proc/stattop、vmstat、mpstat 只可以动态查看,而 sar 还可以记录历史数据;/proc/stat 是其他性能工具的数据来源,也常用用于监控
进程 CPU 使用率top、ps、pidstat、htop、atoptop、ps 可以按 CPU 使用率给进程排序,而 pidstat 只显示实际用了 CPU 的进程;htop 和 atop 以不同颜色显示更直观
系统上下文切换vmstat除了上下文切换次数,还提供运行状态和不可中断状态进程的数量
进程上下文切换pidstat注意加上 -w 选项
软中断top、mpstat、/proc/softirqstop 提供软中断 CPU 使用率,而 /proc/softirqs 和mpstat 提供了各种软中断在每个 CPU 上的运行次数
硬中断vmstat、/proc/interruptsvmstat 提供总的中断次数,而 /proc/interrupts 提供各种中断在每个 CPU 上运行的累积次数
网络dstat/sar、tcpdumpdstat sar 提供总的网络接收和发送情况,而 tcpdump 则是动态抓取正在进行的网络通讯
I/Odstat、sardstat 和 sar 都提供了 1/0 的整体情况
CPU 缓存perf使用 perf stat 子命令
CPU 数lscpu/、proc/cpuinfolscpu 更直观
事件剖析perf、火焰图、execsnoopperf 和火焰图用来分析热点函数以及调用栈,execsnoop用来监测短时进程
动态追踪ftrace、bcc、systemtapftrace 用于跟踪内核函数调用栈,而 bcc 和 systemtap 则用于跟踪内核或应用程序的执行过程 注意 bcc 要求内核版本 >=4.1)
2.2.2 内存性能工具
性能指标性能工具说明
系统已用、可用、剩余内存free、vmstat、sar、/proc/meminfofree 最为简单,而 vmstat、sar 更为全面;/proc/meminfo 是其他工具的数据来源,也常用于监控系统中
进程虚拟内存、常驻内存、共享内存ps、top、pidstat、/proc/pid/stat、/proc/pid/statusps 和 top 最简单,而 pidstat 则需要加上 -r 选项;/proc/pid/stat 和 /proc/pid/status 是其他工具的数据来源,也常用于监控系统中
进程内存分布pmap、/proc/pid/maps/proc/pid/maps 是 pmap 的数据来源
进程 Swap 换出内存top、/proc/pid/status/proc/pid/status 是 top 的数据来源
进程缺页异常ps、top、pidstat注意给 pidstat 加上 -r 选项
系统换页情况sar注意加上 -B 选项
缓存/缓冲区用量free、vmstat 、sarcachestatvmstat 最常用,而 cachestat 需要安装 bcc
缓存/缓冲区命中率cachetop需要安装 bcc
Swap 已用空间和剩余空间free、sarfree 最为简单,而 sar 还可以记录历史
Swap 换入换出free、sarvmstat 最为简单,而 sar 还可以记录历史
内存泄漏检测memleak、valgrindmemleak 需要安装 bcc,valgrind 还可以在旧版本(如 3.x)内核中使用
指定文件的缓存大小pcstat需要从源码下载安装
2.2.3 文件系统和磁盘 I/O 性能工具
性能指标性能工具说明
文件系统空间容量、使用量以及剩余空间df详细文档可以执行info coreutils ‘df invocation’ 命令查询
索引节点容量、使用量以及剩余量df注意加上 -i 选项
页缓存和可回收 Slab 缓存/proc/meminfo、sar、vmstat注意 sar 需要加上 -r 选项,而 /proc/meminfo是其他工具的数据来源,也常用于监控
缓冲区/proc/meminfo.sar、vmstat注意 sar 需要加上-r 选项,而 /proc/meminfo是其他工具的数据来源,也常用于监控
目录项、索引节点以及文件系统的缓存/proc/slabinfo.slabtopslabtop 更直观,而 /proc/slabinfo 常用于监控
磁盘 I/O 使用率、IOPS、吞吐量。响应时间、I/O 平均大小以及等待队列长度iostat、sar、dstat、/proc/diskstatsiostat 最为常用,注意使用 iostat -d -x 或 sar -d 选项; /proc/diskstats 则是其他工具/proc/diskstats数据来源,也常用于监控
进程 I/O 大小以及 I/O 延迟pidstat、iotop注意使用 pidstat -d 选项
块设备 I/O 事件跟踪biktrace需要跟 blkparse 配合使用,比如 blktrace -d /dev/sda -o- blkparse -i
进程 I/O 系统调用跟踪strace、perf tracestrace 只可以跟踪单个进程,而 perf trace还可以跟踪所有进程的系统调用
进程块设备 I/O 大小跟踪biosnoop、biotop需要安装 bcc
动态跟踪ftrace、bcc、systemtapftrace 用于跟踪内核函数调用栈,而 bcc 和systemtap 则用于跟踪内核或应用程序的执行过程(注意 bcc 要求内核版本 >=4.1)
2.2.4 网路性能工具
性能指标性能工具说明
吞吐量(BPS)sar、nethnogs、iftop、/proc/net/dev分别可以查看网络接口、进程以及 IP 地址的网络吞吐量; /proc/net/dev 常用于监控
吞吐量(PPS)sar、/proc/net/dev注意使用 sar -n DEV 选项
网络连接数netstat、ssss 速度更快
网络错误数netstat、sar注意使用 netstat -s 或者 sar -n EDEV/EIP 选项
网络延迟ping、hping3ping 基于ICMP,而 hping3 则基于 TCP 协议
连接跟踪数conntrack、/proc/sys/net/netfilter/nf_conntrack_count、/proc/sys/net/netfilter/nf_conntrack_maxconntrack 可用来查看所有连接跟踪的相信信息nf_conntrack count 只是连接跟踪的数量,而nf_conntrack_max 则限制了总的连接跟踪数量
路由mtr、traceroute、routeroute 用于查询路由表,而 mtr 和 traceroute 则用来排查和定位网络链路中的路由问题
DNSdig、nslookup用于排查 DNS 解析的问题
防火墙和NATiptables用于排查防火墙及 NAT 的问题
网卡选项ethtool用于查看和配置网络接口的功能选项
网络抓包tcpdump、Wireshark通常在服务器中使用 tcpdump 抓包后再复制出来用 Wireshark 的图形界面分析
动态追踪ftrace、bcc、systemtapftrace 用于跟踪内核函数调用栈,而 bcc 和 systemtap 则用于跟踪内核或应用程序的执行过程 (注意 bcc 要求内核版本 >4.1)

2.3 根据指标找工具

2.4 根据工具找指标

2.5 CPU 性能分析一般步骤

2.6 内存性能分析一般步骤

2.7 I/O 性能分析一般步骤

2.8 网络性能分析一般步骤

03 | 操作系统原理

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值