Linux 运维命令速查
文件 / 文本 / 网络 / 进程 / 磁盘 / 权限 / 日志 / systemd / 包管理 / 性能 全场景命令:用途、语法、参数与真实示例,含易错点。
文件与目录
浏览、查找、复制、打包与权限相关文件操作
find 按条件查找文件(核心)热门
功能最强的文件查找工具:按名称、类型、时间、大小、属主、深度筛选并直接执行动作(删除/压缩/执行命令)。
rm 删除文件与目录热门
删除文件或目录;rm -rf 是最危险也最常用的组合,没有回收站,删除前务必确认路径与变量。
cp 复制文件与目录热门
复制文件或目录的核心命令;-a 归档模式保留权限、时间戳与链接,是最可靠的整体复制方式。
tar 打包与解包(归档核心)热门
Linux 归档与分发的主角:打包、压缩、查看、选择性解压一条龙,和 gzip/xz/zstd 组合覆盖各类镜像包格式。
rsync 增量同步与备份热门
增量传输的同步利器:本地/远程、断点续传、排除规则、--delete 保持镜像一致,备份与发布场景标配。
ls 列出目录内容热门
最常用的目录查看命令,支持长格式、人类可读大小、按时间排序与递归展示,配合通配符可快速定位文件。
mv 移动与重命名热门
移动文件或目录,同目录内即重命名;同名文件默认直接覆盖,跨文件系统时内部执行复制加删除。
cd 切换工作目录
Shell 内建命令,切换当前工作目录;支持回上一次目录、回家目录、经 CDPATH 快捷跳转。
mkdir 创建目录
创建一级或多级目录;-p 自动补齐父目录且目标已存在不报错,是脚本幂等建目录的标准写法。
场景:查找并批量删除 30 天前日志
磁盘告警时的经典操作:按时间圈出历史日志,先预览数量与清单,再批量删除或归档。
gzip 压缩与解压(.gz)
单文件压缩标准工具,默认删除原文件;日志压缩、tar.gz 内核与互联网分发格式的底层依赖。
场景:快速定位占用磁盘的大文件
服务器空间去哪儿了:按大小阈值横扫目录,输出排序清单,直奔罪魁祸首。
touch 创建空文件与修改时间
创建空文件或刷新文件时间戳;-d/-t 可指定时间,常用于触发构建系统、测试增量逻辑与伪造时间场景。
find 按名称匹配(-name/-iname/-path)
-name 匹配文件名的最后一段,-iname 忽略大小写;匹配完整路径用 -path,组合排除用 -not。
find 按时间筛选(-mtime/-mmin/-newer)
按修改时间筛选文件,-mtime 以天为单位(24 小时周期),-mmin 精确到分钟;-newer 用参照文件比较。
find 执行动作(-exec / -delete)
边查边干:-exec 调外部命令(\; 单文件一次,+ 批量一次),-delete 直接删除,-ok 交互确认。
stat 查看文件详细属性
显示文件大小、inode、权限与三个时间戳(atime/mtime/ctime),排查同步与备份问题必备。
ln 创建硬链接与软链接
创建硬链接或符号链接(-s);软链是发布切换、版本目录(current 指向)与跨分区引用的基础设施。
unzip 解压 .zip 文件
解压 zip 包的标准工具;先 -l 预览再解压,处理 Windows 中文包乱码要特别小心。
sha256sum 校验文件完整性
计算与校验 SHA-256 摘要;核对下载包、备份一致性与「文件有没有被改」的标准手段。
find 按大小筛选(-size/-empty)
-size 按块或单位筛选大小(c/k/M/G),-empty 直接找空文件与空目录;磁盘清理的常用组合。
场景:网站目录增量备份到备份机
用 rsync 把站点目录同步到备份服务器:排除日志缓存、限速保护带宽,--link-dest 做多版本硬链接快照。
pwd 显示当前目录
打印当前工作目录的绝对路径;-P 解析软链接显示物理路径,是脚本取路径的基本命令。
zip 压缩(跨平台 .zip)
生成 Windows/Linux 通吃的 .zip 包;交付客户、上架与跨平台分享时首选,注意传统加密很弱。
重定向与管道(> >> 2>&1 |)
把标准输出/错误输出接到文件或其他命令:日志落盘、错误分离、tee 双写,是运维脚本最基础的一层语法。
场景:改配置前先备份(含时间戳)
改动任何配置文件之前先 cp -a 备份带时间戳的副本;出问题 10 秒回滚,是运维的基本素养。
which 定位命令的完整路径
在 PATH 中查找可执行文件路径;多版本环境(python、java)确认实际调用哪个安装时第一步。
场景:rsync 干跑核对同步差异
正式同步/删除前先 -n 空跑,把将发生的每处变化(新增/修改/删除)列出来确认。
场景:检索最近变动的文件(发布核对/应急)
发布后核对动过哪些文件、入侵排查找新增可疑文件,按分钟或起止时间圈范围最快。
场景:日志压缩归档与过期清理
磁盘告急清理的标准操作:先干跑核对范围,再压缩归档,最后按更老策略删除;全程空值保护、留痕可回溯。
file 识别文件真实类型
基于文件头魔法字节判断真实类型,不依赖扩展名;收到来源不明的文件先用它验明正身。
文件三种时间戳(atime/mtime/ctime)
访问时间、修改时间、元数据变更时间;理解三者差异是排查同步、备份与入侵篡改的基础。
通配符与花括号扩展(globbing)
shell 的文件名展开规则:* ? [] 与 {a,b} 花括号,理解展开时机(命令执行前由 shell 完成)是写好命令的关键。
场景:历史日志压缩归档与清理
把超过 7 天的日志压缩成 .gz、超过 90 天的归档删除;与 logrotate 切分互补,控制磁盘占用。
场景:下载文件校验工作流
从网络拿到的二进制/镜像,下载 → 摘要核对 → 签名验证三步走,防损坏更防篡改。
场景:文件名含空格也能安全批量处理
find 与 xargs 的黄金组合:-print0 与 -0 用 NUL 分隔,任何怪文件名都不会被拆裂。
场景:用软链切换发布版本(current)
版本目录并存 + current 软链指向线上版本:发布即切换,回滚即改指向,是零停机发布的经典模式。
install 复制文件并设定权限
比 cp 更适合部署:一次完成「复制 + 权限 + 属主 + 建目录链」,脚本里安装二进制与配置文件的标配。
tree 树形展示目录结构
以树状图递归展示目录层级,-L 限制深度、--du 显示目录体积,是写文档与盘点目录的好帮手。
readlink 查看符号链接指向
读取符号链接指向的目标;-f 递归解析到最终真实路径,排查版本切换软链(current)时的第一工具。
场景:解压前预览与只取包内文件
拿到 tar 包的规范动作:先列表看结构,确认路径安全与内容,再选择性解压需要的路径。
场景:打包排除缓存与版本库
给源码/站点打包时排除 .git、node_modules、日志与缓存,包体更小、交付更干净。
场景:解压 Windows 中文 zip 乱码处理
Windows 打包的中文压缩包在 Linux 解压文件名乱码:根因是 GBK 与 UTF-8 编码错位,用 7z 或 -O 指定编码解决。
zcat/zgrep/zless 直读压缩文件
不解压直接查看与检索 .gz 日志:zcat 看、zgrep 搜、zless 翻页;处理归档日志不占额外磁盘。
basename 取路径中的文件名
从完整路径中截取最后一段(文件名),可选去掉指定后缀;脚本里组装文件名的高频工具。
type 判断命令的真实来源
显示命令是别名、函数、内建还是外部程序;排查命令行为不一致、确认 alias 干扰的权威工具。
场景:批量重命名文件(循环 + mv)
把 *.jpeg 全改成 *.jpg 这类批量改名:shell 循环 + 参数扩展是通用公式,动手前先 echo 干跑。
rmdir 删除空目录
只能删除空目录,天然防呆;批量清理空目录树用 find 与 rmdir 组合,误删风险远小于 rm -r。
dirname 取路径中的目录部分
从完整路径中取目录段,与 basename 相反;脚本里切换到自己所在目录的经典组合。
mktemp 创建安全临时文件
生成带随机串的临时文件或目录,避免固定名字被抢占与符号链接攻击;脚本创建临时资源的推荐方式。
zstd 压缩与解压(.zst)
Facebook 开源的新一代压缩:速度接近 gzip、压缩率接近 xz,现代日志归档与镜像分发的首选。
场景:批量清理空目录
上传目录、解压残渣里的空目录树批量修剪,自底向上一次清干净。
realpath 解析绝对真实路径
把相对路径、含软链接的路径解析为规范绝对路径;-m 允许路径不存在,部署脚本常用。
rename 批量重命名
按规则批量改名,两种版本(util-linux 简单替换 / Perl 正则版)语法完全不同,用前先确认是哪一种。
xz 压缩与解压(.xz)
压缩率最高的通用工具(LZMA2),内核与发行版镜像的标配格式;代价是 CPU 与内存开销大。
find 跳过目录(-prune)
排除整个子树的正确方式:命中目录后不再下钻,常用于跳过 .git、node_modules、缓存目录。
场景:大文件分卷传输与合并校验
受限网络传大文件:拆分成分卷、逐段传输、端上合并并用哈希校验完整性。
场景:按扩展名分类归档文件
整理下载目录/上传目录:按类型把文件搬进 images、docs、arch 子目录,case 分支一次成型。
truncate 截断或扩展文件
把文件改到指定大小:-s 0 清空日志(不换 inode)、+N 稀疏扩展、-N 缩小;造稀疏测试文件也常用。
locate 秒级查找文件
基于数据库索引的极速查找,远快于 find;索引不实时,找新文件前先手动 updatedb。
split 拆分大文件
把大文件按大小或行数切成多个小片,方便传输、上传受限平台与并行处理;cat 按序合并还原。
7z 压缩与解压(p7zip)
高压缩率 + AES-256 加密 + 分卷 + 跨平台,是加密归档与 Windows 中文 zip 乱码的通用解决方案。
rsync --inplace 大文件增量同步
大文件(镜像/虚机盘/数据库导出)小改动用 --inplace 只传差异块,省时间也省临时空间;默认模式是「临时文件+改名」。
whereis 查找命令的二进制与手册
定位命令的程序、源码与 man 手册位置;面对系统里散落多套安装时,比 which 提供更多线索。
fd 现代文件查找工具
Rust 编写的高性能 find 替代品:语法更短、默认彩色、自动忽略 .gitignore 与隐藏目录,日常查找体验极佳。
场景:查找断链的符号链接
版本目录搬迁、目标被删后留下一地断链;find -xtype l 一键列出,清理前人工过一遍。
场景:cp -al 硬链接快照省空间
用 cp -al 一秒生成目录快照:所有文件硬链接共享数据,后续只复制变化文件,磁盘占用接近增量备份。
场景:导出目录结构清单
交接、评审、排障时附一份带层级控制的目录结构:tree -L 限深度,排除依赖目录避免噪音。
fallocate 预分配文件空间
秒级预分配磁盘空间(不写实际数据),用于备份盘预留、测试大文件与防「写满才发现」;比 dd 快几个数量级。
inotifywait 监控目录变化
实时监控文件创建、修改、删除事件并打印,用于调试脚本触发、观察部署过程与简易审计。
bzip2 压缩与解压(.bz2)
经典高压缩率工具,压缩比通常高于 gzip 但速度慢;老系统与遗留归档中常见,配合 tar -j 使用。
fdupes 查找重复文件
按内容(大小 + 哈希)找出重复文件,清理冗余数据、节省磁盘空间;衍生版 jdupes/rdfind 更快。
pushd / popd 目录栈切换
把目录压栈/弹栈,在多个工作目录间快速往返;比反复 cd 更清晰,适合源码与配置目录来回切换。
shred 安全擦除文件
多次覆写后删除文件,降低恢复软件找回的可能性;对机械盘有效,SSD 与 CoW 文件系统效果打折。
mkfifo 创建命名管道
创建 FIFO 文件实现进程间通信:一端写、一端读,数据不进磁盘;常用于流式备份与命令衔接。
tar 追加与更新包内文件
向已有 tar 包追加或更新文件(-r/-u),以及合并两个包(-A);仅支持未压缩 tar。
文本处理
grep/sed/awk/排序去重与日志截取
grep 文本搜索(基础)热门
最常用的行级搜索工具:默认输出匹配行,-i 忽略大小写、-v 反选、-n 行号、-c 计数、-o 只输出匹配部分。
sed 流编辑器(基础)热门
非交互式文本流编辑器:按行处理、默认打印每行、-n 静默配合 p 精确输出,脚本化编辑的核心工具。
awk 文本处理编程(基础)热门
面向字段的行处理语言:'模式{动作}' 结构 + $1..$NF/NR/NF 内建变量,统计分析能力远超 cut/sed。
cat 查看与拼接文件
把文件内容输出到屏幕或管道;-n 加行号、-A 显示隐藏字符,也是 heredoc 写文件的经典载体。
tail 查看文件末尾与实时跟随
看最新日志的基本工具:-n 数字行、-f 实时跟随、-F 跟踪轮转后的新文件,运维出场率最高的命令之一。
diff 比较文件与目录差异
逐行找出两个文件(或目录)的不同:-u 统一格式生成补丁、-q 只报是否不同、-r 递归比目录,是配置巡检与发布核对的基本盘。
less 分页查看大文件
分页浏览器:翻页、搜索、跟随增长、看压缩文件一应俱全,是查看大文件与日志的最佳交互工具。
sort 排序文本行
按行排序:-n 数值、-r 逆序、-u 去重、-k 指定键、-t 指定分隔符、-h 人类数字、-V 版本号。
tail 同时跟踪多个文件
一条命令盯多个日志:多文件跟随自动带 ==> 文件名 <== 标题;-F 跟踪轮转,grep -m1 等到关键字自动退出。
head 查看文件开头
默认输出前 10 行:看 CSV 表头、配置头、协议样例的第一选择;-c 按字节、-n -N 显示「除最后 N 行」。
grep 递归搜索目录
在目录树中递归搜索:-r 递归、-l 只列文件名、--include/--exclude-dir 过滤范围,代码与配置排查利器。
sed 替换命令 s/// 深入
替换是 sed 最常用动作:s/旧/新/[gI] 控制范围与大小写,分隔符可替换为 | # 等,& 与反向引用处理变形。
uniq 去除相邻重复行
去重工具:只处理相邻重复行,所以先 sort;-c 计数、-d 只显示重复、-u 只显唯一。
jq 解析与提取 JSON
命令行 JSON 处理器:. 原样格式化、-r 输出裸字符串、-c 紧凑单行、select 过滤、管道串联取深层字段,接口调试必备。
wc 统计行数/词数/字节
统计文件的行、词、字符与最长行;代码量、日志规模、管道计数的高频工具。
sed -i 原地编辑文件
-i 直接修改文件内容:-i.bak 先留备份再改,批量处理多文件名时配合 find / xargs。
awk 字段与列操作
-F 指定分隔符、$NF 取最后字段、NF 数字段、修改字段后重建整行,按列裁剪与重排的核心手法。
xargs 把输入变成命令行参数
把标准输入的每行/每段变成命令参数:-n 每批数量、-I 占位替换、-P 并行、-0 配合 find -print0。
cut 按列剪切文本
按分隔符取字段(-d -f)或按字符位置取(-c),轻量列提取工具;规则简单是优点也是局限。
rg ripgrep 极速文本搜索
现代递归搜索工具:默认并行、跳过 .git 与 .gitignore 忽略项,速度远超 grep -r;-F 固定串、-l 只列文件、-g 过滤器都很顺手。
grep 上下文与提取(-A/-B/-C/-o)
不只给匹配行:-A/-B/-C 显示前后几行上下文,-o 只抓匹配内容,定位异常时信号更完整。
grep 正则:BRE / ERE / PCRE / 固定串
grep 默认基本正则(BRE),-E 用扩展正则、-P 用 PCRE、-F 按固定字符串(最快)——选对模式层级很关键。
awk 统计:求和/均值/计数/极值
用 BEGIN/END 与变量聚合:求和 s+=$2、计数 n++、求平均 s/n、最大最小值,一行完成小报表。
uniq -c 频次统计与 TOP 排名
把重复值变成「计数 + 值」并排序取前几:统计 IP、状态码、URL、错误类型的标准流水线。
tr 字符替换与删除
字符级转换器:大小写互转、删空白、压缩重复字符、清理 CRLF;只能处理单个字符,不能替换字符串。
iconv 字符编码转换
Linux 上转码的标准工具:-f 源编码、-t 目标编码,GBK/GB18030 老系统文件转 UTF-8 的第一选择;-l 可列出全部支持的编码。
sort 多键排序(-k/-t)
按指定字段排序:-k 起止字段、-t 分隔符、-k 2,2n 字段内数值序,日志与报表整理的进阶用法。
sort 进阶:大小 / 版本 / 随机
-h 按人类可读大小排序、-V 按版本号、-R 随机打乱、-t/-k 指定字段,du/df 输出排行榜全靠它。
sed 地址定位与删除行
用行号或正则圈定处理范围:'3d' 删第 3 行、'2,5p' 打印 2-5 行、'/start/,/end/d' 删除区间。
tee 分流输出到文件
管道中的三岔口:命令输出既进下一个程序又写文件;-a 追加,sudo tee 解决权限写文件问题。
场景:CSV 列抽取与统计
快速对 CSV 做单列统计:cut/awk 抽列、sort 排序、uniq -c 计数、sort -rn 排行,30 秒拿到分布结论。
场景:TopN 统计通用套路
「排序 → 去重计数 → 再排序 → 截断」四连是日志分析最常用的排列组合:Top IP、Top URL、Top 状态码都靠它。
awk 数组分组统计
awk 的关联数组是命令行统计的发动机:cnt[$1]++ 计数、sum[$2]+=$3 求和,END 块里遍历输出,配合 sort 得到排行榜。
场景:对比两份配置的差异
巡检或发布前核对配置:小文件直接 diff -u;顺序不敏感的配置先排序再比;整目录用 rsync -n 干跑看清单。
场景:按时间窗提取日志
排查某时段故障:sed 按起止模式截段、awk 按时间字段做区间过滤,先小范围验证再全量跑。
diff -u 生成统一格式补丁
-u 输出带上下文与文件头的统一格式,是 patch、git apply 与代码评审的标准格式;-ruN 常用于「旧版本目录 → 新版本目录」的整树补丁。
dos2unix 换行符转换
把 Windows CRLF 换成 Unix LF(unix2dos 反向)。脚本在 Linux 报 bad interpreter 或 ^M 报错,十有八九是它。
patch 应用补丁文件
把 diff 生成的补丁打进源码或配置:-p 定路径层级、--dry-run 先演练、-R 反向回滚,生产改动前的演练步骤不能省。
场景:批量检测并转换文件编码
老系统导出 GBK/GB18030 文本批量转 UTF-8:file -i 探测 → iconv 转换 → 换行归位,最后抽样复核。
场景:接口 JSON 字段提取
调接口排障的标准组合:curl -sS 拉 JSON,jq -r 抽字段;HTTP 错误也要把状态码和响应体分开看。
场景:多文件批量替换文本
站点改域名、批量改配置的经典组合:grep -rl 先列出命中文件 → sed -i.bak 替换留档 → 再 grep 复核;范围永远先小后大。
base64 编码与解码
按 RFC 4648 把二进制转成 ASCII 文本:传输二进制、嵌入数据到文本协议、解码 API 返回的编码字段。
column 对齐成表格
把文本整理成对齐的列:column -t 自动按空白分隔,-s 指定输入分隔符(如逗号),-o 指定输出分隔符,看报表舒服多了。
jq 进阶:统计、构造与参数
jq 不止取字段:group_by 分组统计、add 求和、sort_by 排序、--arg 注入 shell 变量、@tsv/@csv 拼表,日志统计一步到位。
grep -P 使用 PCRE 正则
-P 让 grep 用 PCRE:支持 \d、前后瞻 (?=...)、\K 截断等高级语法,做「提取式」匹配比 sed/awk 顺手。
场景:用补丁安全更新生产文件
生产改配置/小代码的标准姿势:本地 diff -u 生成补丁 → scp 上传 → --dry-run 演练 → 应用 → 复核回滚路径。
awk 双文件处理(NR==FNR)
经典套路:先读小文件建索引/过滤集,再流式处理大文件——按列 join 不需要排序,比 join 命令更实用。
cmp 字节级文件比较
按字节比较两个文件:默认报出第一处差异的位置与内容,-s 静默只靠退出码判断相同与否,是脚本校验的常用手段。
xxd 十六进制查看与还原
vim 自带的十六进制工具:左边十六进制、右边 ASCII,-r 能把转储原样还原成二进制,-p 输出纯 hex 字符串。
场景:去重同时保留原始顺序
sort -u 会丢顺序;要「按首次出现顺序去重」用 awk 的 seen 数组,URL 清单、订单号去重场景常用。
shuf 随机打乱与抽样
随机洗牌行、随机抽样 N 行、生成随机数;日志抽检、测试数据采样与随机排序的轻量工具。
comm 比较两个有序文件的异同
输出三列:只在文件1、只在文件2、两边都有;-12 取交集、-23 取仅 1 独有,集合运算非常好用;前提是输入必须已排序。
strings 从二进制提取可读字符串
扫出二进制文件里的可打印字符串:查版本号、查编译路径、查误打包的密钥片段(确认后速处理),安全与排障两用。
printf 格式化输出
比 echo 更可控的输出方式:宽度对齐(%-20s)、进制转换(%d 读 0x1f)、转义(%q),也是写循环生成文件的常用工具。
场景:多行文本合并成一行
把每行一个的清单(IP、域名、参数)合并成逗号/空格分隔的单行:paste -sd 或 tr + sed 去尾。
yq 查询与编辑 YAML
YAML 世界的 jq:读取/筛选/改写 K8s 清单与 CI 配置;mikefarah 版支持 -i 原地编辑与 JSON 互转。
tac 倒序输出行
按行倒序打印文件:日志从最新往回看、倒查变更记录时很顺手;-s 可指定行分隔符。
join 按键连接两个文件
类 SQL JOIN:按共同字段把两个有序文件拼成宽表;-t 指定分隔符、-a 保留未匹配行,统计报表拼接常客。
od 八进制/十六进制转储
经典二进制查看器:-c 看字符、-tx1 看十六进制字节、-An 去掉地址列;排查魔数、行尾、不可见字符都靠它。
pv 管道进度与限速
给任何管道加进度条:字节速率、总量、耗时一目了然;-L 限速、-N 命名、-s 给总量才有百分比与 ETA。
场景:生成对齐的文本报表
把 CSV 或命令输出变成人眼友好的对齐表格:column -t 自动对齐,配 sort/head 出排行榜。
perl 一行流处理文本
比 sed 更强的单行处理:PCRE 级正则(\d、\K、非贪婪)随手可用,-i 原地改、-ne 逐行判断,脚本万能替补。
paste 按列合并文件
把多个文件同一行号的内容并成一行(-d 指定分隔符);-s 则把单个文件的每一行串成一行,生成逗号列表很方便。
sponge 管道结果回写同一文件
moreutils 小工具:把管道输出先攒起来再写回原文件,避免「读一个文件同时覆写它」导致的清空事故。
sed 保持空间与多行操作
sed 的进阶核心:pattern space 与 hold space 配合(h/H/g/G/x/D/N),能合并行、倒序、挤压空行、按段抽取。
nl 加行号输出
给文件加行号:默认只编号非空行,-ba 全部行、-w 控制宽度、-s 控制分隔符,比 cat -n 更可调。
sdiff 并排比较文件
左右并排显示两个文件的差异,适合人工核对;-o 还能交互式合并生成第三个文件。
csplit 按模式切分文件
按正则行或行号把大文件切成多段:日志按会话标记切段、按固定行数分卷都行;-f/-b 控制命名。
fmt 重排段落文本
把换行混乱的段落重新排成统一宽度:邮件、Markdown 草稿整理利器;-s 只拆不并、-u 统一多余空格。
ts 给管道输出加时间戳
moreutils 家族的小工具:给任何命令的每行输出加时间戳;日志接管、耗时分析(-i 增量模式)都非常顺手。
rev 反转每行字符
把每行字符顺序倒过来;配合 cut/sort 处理「后缀对齐」类文本,或做小玩具字符串变换。
expand / unexpand 制表符与空格互转
expand 把 Tab 换成空格(对齐跨编辑器更稳),unexpand 反过来把空格压缩为 Tab,-a 处理行中所有空白。
hexdump 格式化十六进制转储
另一种转储工具:-C 输出「十六进制 + ASCII」规范视图,-n/-s 控制字节数与起始偏移,排查文件头很好用。
more 基础分页查看
老牌分页工具,功能比 less 少(只能向前翻);现代系统里 more 往往是 less 的软链。
fold 按宽度折行
把超宽行按指定列数硬折行:处理日志里超长单行、给不支持横向滚动的程序喂文本时用;-s 尽量在空格处断。
diff3 三方合并
把「我方 + 基线 + 对方」三份文件做三方比较合并,输出冲突标记结果:手工合并两处独立修改、核对配置变更。
colrm 按列删除字符
删除每行指定列区间(按字符列):老工具,快速裁掉固定宽度报表的前后缀列,数据从 stdin 进。
网络命令
地址查看、连通性、路由、抓包与速率测试
curl 通用 HTTP 客户端热门
运维最常用的网络请求工具:支持 HTTP/HTTPS/FTP/文件上传下载、代理、重定向、cookie、断点续传;调试接口第一手段。
ping 连通性检测热门
最基本的连通性工具:ICMP 探测往返时延与丢包;-c 次数、-i 间隔、-W 超时、-I 指定接口/源地址。
ssh 远程登录与执行热门
远程运维的基本通道:一次执行命令用 ssh host 'cmd',-J 跳板、-i 密钥、-o 参数、-t 分配终端。
tcpdump 抓包分析热门
命令行抓包标准工具:-i any 全接口、-nn 不解析名字、表达式过滤主机/端口/协议;定位「请求到底有没有到」的终极手段。
ip 网络配置总入口
iproute2 套件的主命令,统一替代 ifconfig/route/arp:addr 管地址、link 管网卡、route 管路由、neigh 管邻居表,现代 Linux 网络排查起点。
ss 查看套接字与连接
netstat 的现代替代:查看 TCP/UDP 连接、监听端口与对应进程,-tlnp 是「服务有没有起来」的标准检查。
dig DNS 查询利器
最专业的 DNS 查询工具:指定记录类型与 DNS 服务器、简洁输出(+short)、正反向解析;批量核对解析走 dig 最稳。
scp 远程复制文件
基于 SSH 的文件传输:-r 传目录、-P 端口、-i 密钥、-C 压缩;两台服务器之间搬文件最常用的一条命令。
nc netcat 网络瑞士军刀
TCP/UDP 读写工具:-z 端口探测、-l 监听、-w 超时、传文件/临时调试服务器;-zv 是最快的「端口通不通」答案。
ip route 查看与增删路由
查路由表、查某目标走哪条路(route get)、临时加/删静态路由;多网卡、VPN、双线环境排障核心。
openssl s_client 检测 TLS
直连 TLS 握手看证书链、协议版本与到期时间:配合 -servername(SNI)与 x509 解析,证书问题一眼定位。
场景:网络不通排查顺序
从近到远逐层排除:本机地址 → 网关 → 公网 IP → DNS → 端口 → 目标防火墙,每步用一条命令证伪,别一上来就重启网络。
tcpdump 高级过滤
从「抓个包看看」升级到精准定位:按 TCP 标志位、端口段、VLAN、包长过滤,配合轮转落盘抓长时间窗口。
ip addr 查看与增删 IP
查看接口地址与网卡状态,临时添加/删除 IP(云环境换弹性 IP、加辅助地址时常用);-br 简洁模式适合脚本取字段。
ssh 端口转发与隧道
ssh 三大转发:-L 本地转发(把远端服务映射到本地)、-R 远程转发(暴露本地端口)、-D 动态 SOCKS5 代理;-N 不执行命令、-f 后台化。
traceroute 路由追踪
逐跳探测到目标的路径与延迟:默认 UDP 探测,-I 换 ICMP、-T 换 TCP 绕过封禁,-n 不解析域名看更快。
ssh-keygen 生成与维护密钥
生成 SSH 密钥对(推荐 ed25519)、查看指纹、清理 known_hosts 旧记录(-R);密钥认证的基础工具。
场景:域名解析排查
解析比连通更绕:分成「本地配置 → 缓存服务器 → 权威链路」三段查,dig 是主武器,getent 验证系统真实解析路径。
场景:抓包定位请求是否到达
「客户端说发了、服务端说没收到」的终极裁判:在客户端出口与服务端入口分别抓包,对比 SYN 与响应即可定责。
ip link 网卡启停与统计
查看链路层状态:网卡是否 UP、MTU、MAC;-s 看收发包/错误/丢包计数,快速判断「物理层有没有问题」。
mtr 持续路径质量监测
traceroute + ping 的合体:持续发包统计每跳丢包率与抖动,-r 出报表模式,定位「哪一跳开始丢」最直观。
wget 下载与抓取
GNU 下载工具:-c 续传、-q 静默、--spider 只探测存在性、-i 批量列表;与 curl 各有拥趸,脚本里都常见。
场景:HTTP 接口超时/502 排查
先用 curl 分清「连不上、慢、还是返回错」:状态码 + 耗时分解 + 绕过 DNS/网关直连后端,再决定查 Nginx、后端还是网络。
iftop 实时带宽监控(按连接)
以「连接对」为单位看实时带宽(哪两个地址在刷流量、跑什么端口),排查带宽占用第一步。
curl 下载与断点续传
-o 指定文件名、-O 用 URL 文件名、-C - 断点续传、--limit-rate 限速,发版拉包与日志下载常用。
curl 调试:-v 与 --trace
-v 输出请求/响应全过程(DNS、连接、TLS、头部),--trace-time/--trace - 更细;定位超时到底卡在哪一步。
nmcli NetworkManager 命令行
NetworkManager 体系的标准管理入口:设备状态、连接配置、改 IP/DNS/网关并持久化,取代手改 ifcfg 文件。
tcpdump 落盘与回读
-w 存 pcap、-r 离线回读、-C/-W 自动轮转,适合长时间观察与事后分析;生产环境建议限时限大小。
iperf3 带宽压测
内网带宽与质量的基准工具:一端 -s 服务、另一端 -c 打流;-P 并发流、-R 反向测试、-u UDP 测丢包抖动。
场景:端口连通性批量验证
放行申请、上线验收、安全组核对:用 nc 或 /dev/tcp 批量测端口,输出「通/不通」清单,别靠肉眼一条条试。
场景:TLS 证书巡检
证书到期与链问题是线上高频事故:用循环批量检查域名证书的到期时间与 SNI 返回是否正确,提前 30 天预警。
sshd -t/-T 校验 SSH 配置
改完 sshd_config 先语法校验再重启,避免把自己锁在门外;-T 输出「最终生效配置」排查改了不生效。
ss 过滤表达式进阶
ss 支持类 tcpdump 的过滤语法:按端口、状态、地址、进程名筛选,海量连接时快速定位目标。
curl 发送 POST 与上传
提交表单(-d,默认 application/x-www-form-urlencoded)、JSON(-H 指定类型)、上传文件(-F)、URL 编码(--data-urlencode)。
ssh-copy-id 部署公钥免密
把本机公钥追加到远端 authorized_keys 并自动处理权限:免密登录最省事的一步。
nmap 端口与主机扫描
网络探测工具:-p 指定端口、-Pn 跳过主机发现、--open 只看开放;只对自己或已授权目标使用。
场景:服务监听自查
应用起了但访问不通:从「本机监听 → 本机访问 → 本机防火墙 → 外部访问」四层检查,快速区分应用问题还是网络问题。
场景:SSH 隧道访问内网服务
只有跳板机可达内网时:-L 转发单个服务(数据库/控制台),-D 建 SOCKS 代理走浏览器/curl,比暴露端口安全。
curl 查看请求/响应头
看响应头用 -I(HEAD)或 -D -(把响应头导出),看请求头加 -v 或配合 -i;接口排查认证、缓存、CORS 问题必用。
sftp 交互式文件传输
SSH 内建的交互式传输会话:put/get/ls/cd 像本地操作,-b 可批处理脚本化,替代 FTP 的安全选择。
ethtool 网卡硬件诊断
查看/设置网卡速率、双工、驱动与统计:-S 统计含 errors/drops(判断物理链路质量),-i 驱动版本,乱序/丢包排查必看。
场景:断点续传与传输校验
大文件跨公网传输:选对工具(curl/wget 续传、rsync 增量)并做两端校验,避免「传到一半断了不知道」。
场景:防火墙放行验证
提交放行工单前后都用数据验证:被动等超时还是收到拒绝?结合 nc 与 tcpdump 判断 DROP/REJECT,避免来回扯皮。
场景:rsync 增量发布站点
静态产物/配置目录同步到多台服务器:先 --dry-run 核对清单,再同步;--delete 会删远端多余文件,务必确认范围。
nethogs 按进程看带宽
找出「到底哪个进程在吃带宽」:按进程分组显示实时上下行速率,比 iftop 更贴排错需求。
ping 探测路径 MTU
用「不允许分片」的大包定位 MTU 问题:包发不出去提示 Message too long,逐步缩小 size 找到链路可用值。
dig 进阶:+trace 与批量查询
从根域开始逐级追踪解析路径(+trace),或读文件批量查域名(-f),定位「解析链路哪一级出问题」。
socat 万能连接转发
两个数据通道的桥接器:TCP-LISTEN 转发到后端、UNIX socket 与 TCP 互转、加 fork 支持并发,比 nc 的语法更工程化。
场景:内网带宽与质量测速
迁移大流量前先测:iperf3 打流看吞吐,UDP 模式看丢包抖动,多流对照排除单流瓶颈。
conntrack 连接跟踪表管理
NAT/有状态防火墙背后都是 conntrack 表:查看活跃会话、统计错误、清理单条记录,表满时全靠它诊断。
ab 快速 HTTP 压测
ApacheBench 一条命令跑 QPS 与延迟分布:验证接口容量、对比调优前后效果的最低成本手段。
ip neigh 邻居表(ARP)
查看/管理 ARP 邻居表:IP 与 MAC 的对应、可达状态;同网段丢包或 IP 冲突时先看这里。
hostname 主机名管理
查看/临时设置主机名;永久改名用 hostnamectl set-hostname,改完记得核对 /etc/hosts 与 ansible/监控的命名依赖。
wget 镜像抓站
-r 递归、-np 不进上级目录、-k 转换链接、-p 拉齐页面资源;做静态文档/图片站镜像的标准组合。
场景:MTU 黑洞定位
症状识别:SSH 能连、小请求正常,稍大响应就卡死——典型 MTU 问题;用 ping -M do 逐档探测并修正接口/路由 MTU。
场景:多网卡/多出口选路验证
双网卡机器(内网+公网、专线+宽带)常出现「从哪出去、以谁为源」的错位:用 ip route get 与 curl --interface 验证。
场景:批量 URL 巡检
上线后巡检一组接口/页面:curl 逐个取状态码与耗时,输出成清单,异常项一眼可见;可并行加速。
场景:丢包问题定位
先判断丢在路径还是本机:mtr 看逐跳丢包,本机用 ethtool/ss 看错误与重传计数,最后 tcpdump 抓现场。
场景:跳板机与 ProxyJump 运维
访问内网主机只经过跳板:ssh -J 或 ~/.ssh/config 的 ProxyJump 一劳永逸;转发的 Agent 能力有安全边界。
ip rule 策略路由
默认路由只有一张表;策略路由可以「按源地址/按 fwmark 走不同出口」——多网卡、多线路分流的核心工具。
ss -s 连接统计总览
一眼看全机器的套接字总量与 TCP 状态分布:established/time-wait/orphan 等,判断连接风暴与句柄压力的入口。
resolvectl 查询 systemd-resolved
systemd 体系里 DNS 走 resolved 服务:resolvectl status 看每网卡 DNS 配置,query 按 resolved 逻辑解析,排「只有某网卡域名不解析」必用。
tc netem 模拟网络劣化
用 netem 在本地接口注入延迟/丢包/抖动:验证应用在弱网下的表现,测试超时与重试逻辑的利器。
场景:临时静态路由与回滚
跨网段临时打通:加一条主机路由验证,确认后决定是否持久化;全程记录「加了什么、怎么删」。
场景:SSH 登录慢排查
连上了但要等 10 秒以上:用 ssh -vvv 定位卡在哪个阶段,八成是服务端反向 DNS 或 GSSAPI 认证超时。
场景:改 DNS 后的生效链检查
换了 DNS 记录或 DNS 服务器后「还是老结果」:从本机缓存 → 中间缓存 → 权威逐层清/验证,顺序不能乱。
场景:接口耗时分解巡检
把「接口慢」拆成 DNS、连接、TLS、TTFB、下载五段:用 curl -w 输出的指标定位瓶颈环节,可批量对比。
tracepath 免 root 路径探测
iputils 自带的轻量路由追踪:无需特权、顺带报告每跳 MTU(PMTU),排查隧道/PPPoE 的 MTU 问题特别对症。
nslookup 交互式 DNS 查询
老牌 DNS 查询工具(Windows/Linux 通用):nslookup 域名 或指定服务器与类型,快速核对解析是否一致。
telnet 端口与协议手测
作为登录协议已淘汰(明文),但作为「手写协议调试器」仍好用:连端口、敲 HTTP/SMTP 命令看原始响应。
netstat 传统连接查看
老牌网络状态命令:-tulnp 看监听、-an 看连接、-s 看协议统计;新系统建议换 ss,但维护老脚本时仍常遇到。
arping 二层连通验证
绕过 IP 层直接测二层:arping 目标 IP 看谁回 MAC;-D 做重复地址检测(DAD),IP 冲突排查利器。
场景:代理环境下联网排查
服务器走代理出网时:环境变量、curl/wget 各自的配置、NO_PROXY 排除清单都要核对;不通先分清「没走代理」还是「代理本身不通」。
场景:服务器时间同步排查
时间漂移会让证书校验失败、日志对不上、分布式系统报错:timedatectl 看状态,chrony 看源与偏差,必要时手动步进。
nstat 内核网络计数器
把内核网络计数器按「增量」展示:重传、UDP 错误、连接失败原因等,做网络体检与故障归因。
whois 域名注册信息查询
查询域名注册商、注册/到期时间与 NS:排查「域名为何解析到旧 IP」「到期时间」时用,迁移资产核对必备。
场景:临时增加 IP 并验证
云厂商弹性 IP、换绑场景:用 ip addr add 临时挂上新地址验证业务,再决定持久化或回退。
ip monitor 实时网络事件
持续打印内核网络事件流(地址增删、路由变化、链路状态、邻居表),排查 VIP 漂移与网络抖动的时间线神器。
host 简洁 DNS 查询
输出最简洁的 DNS 工具:host 域名 直接给 A/AAAA,-t 指定类型,脚本里取结果方便。
ifconfig 传统网卡查看
legacy 网卡命令:ifconfig 看地址、up/down 启停;新系统请用 ip,但很多老文档与新装最小系统仍常见。
route 传统路由管理
legacy 路由命令:route -n 看路由、add/del 增删;新系统用 ip route,两者不要混用同一场景排查。
arp 传统邻居表管理
legacy ARP 表查看与删除:arp -n 看条目、arp -d 删除;新系统等价 ip neigh。
进程与作业
查看、查找、杀进程与后台作业管理
top 实时进程监控热门
最常用的实时资源视图:默认按 CPU 排序,1 看每核、M 切内存排序、c 看完整命令、k 杀进程;load 与 %wa 判断系统压力。
ps 查看进程快照热门
进程查看的起点:ps aux(BSD 风格)或 ps -ef(UNIX 风格)列出全部进程与 CPU/内存/启动时间等关键列。
kill 发送信号
kill 的本职是发信号而非「杀死」:kill PID 默认 TERM 请求退出,-9 强杀,-l 列信号,负 PID 可发给进程组。
strace 跟踪系统调用
跟踪进程与内核的交互:attach 运行中进程(-p)、跟随子进程(-f)、过滤调用(-e)、统计耗时(-T/-c),定位卡死/报错根因。
lsof 查看进程打开的文件
列出进程打开的所有文件(含普通文件、目录、socket):按进程/路径/用户查;排查句柄泄漏、文件占用、已删未释放都靠它。
nohup 让任务免疫挂断
让命令在终端关闭后继续运行:nohup 命令 & 并重定向输出;退出时忽略 SIGHUP,是简陋但通用的临时守护。
pgrep 按条件找进程
按名称/命令行/用户查 PID,替代 ps | grep 组合;-f 匹配完整命令行、-a 同时显示命令、-u 按用户。
ulimit 会话资源限制
查看/设置当前 shell 会话的资源上限:-n 打开文件数、-u 进程数、-v 虚拟内存、-c core 大小;服务报 too many open files 先看这里。
procfs 直接读进程数据
/proc/PID 是内核暴露的进程视图:cmdline/environ/cwd/exe/fd 能拿到 ps 看不到的细节,排查环境与句柄的终极窗口。
场景:端口占用反查进程
启动服务报 Address already in use:ss -tlnp 找到占端口的 PID,确认身份后决定处理方式;先看是「残留旧进程」还是「正常服务」。
watch 周期执行命令
每 N 秒重复执行命令并全屏刷新:watch -n 2 'ss -s';-d 高亮变化,盯指标/文件变化非常直观。
tmux 终端复用与脚本化
现代终端复用器:会话/窗口/面板三级结构,断线恢复、分屏同看日志与指标,send-keys 还能脚本化驱动。
ps 自定义输出列
用 -o 精确选取列(pid/ppid/stat/etime/lstart/cmd),排查「谁起的、跑了多久、什么状态」时信息最干净。
pkill 按条件杀进程
pgrep 的杀进程版本:pkill -f 模式、-u 用户、-9 强杀;批量清理同类进程一条命令,但请先 pgrep 核对。
场景:定位 CPU 占用大户
服务器卡顿先找谁在吃 CPU:top 排序找进程 → 线程级定位(top -H / ps -L)→ 确认身份与启动方式,必要时降权或重启。
htop 增强型监控
彩色交互界面:F4 过滤、F5 树视图、F6 排序、F9 杀进程、u 按用户筛;比 top 顺手,生产排查口碑最好。
timeout 限时执行命令
给命令设上限:timeout 10 curl ...;超时以 124 退出,-s KILL 强化、-k 付宽限时间,脚本防挂死必备。
lsof 网络连接视角
lsof -i 列出进程与网络连接的对应:-i :8080 查端口、-i @1.2.3.4 查对端、-sTCP:LISTEN 只看监听、-nP 不解析,与 ss 互补。
场景:定位内存占用大户
内存告警先分清「真占用还是缓存」:free -m 看 available、top 按内存排、pmap 看进程内存构成,OOM 前及时处置。
flock 文件锁防并发执行
互斥跑批的轻量方案:同一把锁同时只允许一个实例运行,cron 重叠、脚本防重入的标准解法;进程退出锁自动释放。
信号语义与优雅停服
理解信号才能正确停服:TERM 请求退出(可被捕获)、INT 同 Ctrl+C、HUP 常被守护进程当作 reload、KILL 无法捕获。
场景:后台任务守护与日志
没有 systemd 权限时的标准后台化组合:nohup + setsid + 重定向 + pidfile,一条命令交代清楚「在哪跑、日志在哪、怎么停」。
场景:已删除文件仍占空间
df 显示磁盘满但 du 找不到大文件:进程还拿着「已删除」的文件句柄(日志被删/轮转错误常见),lsof +L1 揪出来。
作业控制:后台/前台/挂起
交互式 shell 的作业管理:& 放后台、Ctrl+Z 挂起、fg/bg 切换、jobs 查看、disown 脱离;理解 SIGHUP 才是重点。
场景:xargs -P 并行批处理提速
几千个小文件要压缩/转码/上传:find -print0 + xargs -0 -P N 从串行改并行,按核数与 IO 调参,先小批量试跑。
top 批处理采样模式
top -b 非交互输出:-n 次数、-d 间隔、-b 可直接进日志/管道,做定期快照与事后分析。
jobs 查看后台作业
列出当前 shell 的作业(后台 & 与挂起的任务):jobs -l 带 PID、%编号 用于 fg/bg/kill。
nice 以指定优先级启动
以调整后的 CPU 优先级启动命令:值越低优先级越高(-20 最高、19 最低);备份/压缩等重任务用 +10 起步避免抢占业务。
screen 会话保持与恢复
老牌终端复用器:断线后会话还在(screen -r 恢复),-dmS 直接后台建会话;服务器上跑长任务的保险。
场景:杀不掉的进程怎么办
kill -9 都没反应:先看状态(D 拿不掉、Z 已死等收尸),再决定等 IO/处理父进程,别反复硬杀。
场景:进程卡死用 strace 定位
服务不响应但没崩:attach 看它现在停在哪个系统调用(网络?磁盘?锁?),几十秒就能给出方向。
GNU parallel 并行执行
比 xargs -P 更结构化的并行器:参数替换串、进度条、失败策略、重试一应俱全,批量任务提速的省心选择。
ps 进程树展示
--forest 用缩进画出父子层级:查「这个进程是谁拉起来的」「批量清理一整棵进程树」时必用。
fg/bg 前后台作业切换
Ctrl+Z 把前台任务挂起,bg 让它后台继续跑,fg 拉回前台;跑长命令忘了加 & 时的救命操作。
uptime 负载与开机时长
显示当前时间、运行时长、登录用户数与 1/5/15 分钟负载平均值:判断「忙不忙」的第一眼命令。
场景:批量安全清理同类进程
一次杀掉一类进程(旧 worker、测试残留):先 pgrep 预览 → 核对数量与启动者 → pkill 或 kill 列表 → 确认清空。
场景:文件句柄耗尽排查
服务报 too many open files / accept 失败:确认进程 fd 上限与当前用量,找出泄漏来源(未关闭的连接/文件),再决定临时提限还是修复。
场景:不重启服务切割日志
应用把日志写进单文件越滚越大:mv 后让应用重开句柄(kill -USR1 或应用自带 reopen),或用 copytruncate 兜底。
wait 等待进程结束
等待后台进程/作业结束再继续:wait $! 等最近一个、wait PID 等指定、无参等全部;脚本串行编排的粘合剂。
renice 调整运行中进程优先级
给已在跑的进程改 nice 值:renice -n 10 -p PID;给整个进程组/用户调整用 -g/-u,救火时把扫库任务降下去。
场景:进程重启时间与频繁退出排查
服务「又挂了」:先确认进程活了多久(lstart/etimes),短命重启就去看退出原因(日志、OOM、端口冲突),别盲目重启。
场景:线程级 CPU 定位
整机 CPU 高但进程列表看不出:把视角降到线程级(top -H、ps -L),找到热点线程再对应到代码(Java 的 nid、Go 的 goroutine dump)。
trap shell 信号与清理钩子
脚本的「收尾保障」:退出/中断时删临时文件、收尾子进程、记录失败行号;写可靠脚本的必修课。
pstree 进程树速览
树形展示进程关系:-p 带 PID、-a 带参数、-u 标注用户变更;查「谁 fork 了谁」比 ps --forest 更聚焦。
disown 让后台作业脱离会话
把作业从 shell 作业表移除:之后退出终端不向它发 SIGHUP,弥补「忘了 nohup 就跑了长任务」。
ionice 调整磁盘 IO 优先级
控制进程的 IO 调度类与优先级:-c2 -n7 尽力而为最低、-c3 空闲级(只在磁盘空闲时干活),备份任务友好。
pmap 查看进程内存映射
分解进程的内存构成:各段 RSS/共享内存与映射来源;判断「内存去哪了」比 top 的 RES 数字更细。
场景:终端断开后任务还在吗
SSH 断线后任务命运由信号决定:前台任务会被 HUP 干掉,nohup/disown/setsid/tmux 的才能活;事后补救先查进程还在不在。
场景:核心转储抓崩溃现场
进程神秘崩溃:先确认 core 开关与落盘路径(ulimit -c、core_pattern),用 coredumpctl/gdb 看栈,比复现快得多。
场景:用信号做配置热加载
改完配置不想重启进程:找出应用支持的重载信号(HUP/QUIT/USR1),发信号后验证配置生效,业务无损。
stdbuf 调整管道缓冲
命令进管道后输出「不是实时」的元凶是缓冲:stdbuf -oL/-o0 改 buffering 模式,让 tail/tee 场景恢复实时。
killall 按名称全杀
按进程名杀所有实例:killall nginx;-s 指定信号、-i 交互确认、-w 等待退出、-u 限定用户。
sleep 延时控制
脚本节流与等待:sleep 0.5 支持小数、2m/1h 带单位、infinity 永久;等待服务就绪时尽量用循环探测替代死等。
taskset 绑定 CPU 亲和性
把进程绑定到指定 CPU 核:taskset -c 0,1 cmd 启动时绑定、-pc 调整运行中进程;隔离折腾任务/验证单核性能时用。
setsid 脱离终端新会话
在新的会话中运行命令:进程不再属于当前终端的进程组,关闭终端/Ctrl+C 都不会影响到它——比 nohup 更彻底。
supervisorctl 进程守护管理
supervisor 的 CLI:status/restart/tail 管理常驻脚本进程(非 systemd 场景常用),改配置后 reread + update 生效。
场景:僵尸进程清理
ps 里一堆 Z 状态:它们已死只等父进程回收;正确做法是处理父进程(wait 逻辑/重启父进程),而不是对僵尸本身动手。
场景:限制单个脚本的资源
跑一个可能吃资源的脚本(转码/解析大文件):用子 shell + ulimit 兜底,超限被杀而不是拖垮整机。
nsenter 进入命名空间排错
宿主机上「钻进容器」的底层方法:按 PID 进入目标进程的网络/挂载/PID 命名空间,容器里没有的工具用宿主机的跑。
pidof 查找进程 PID
按可执行文件名精确查询 PID:pidof nginx;脚本里判断「进程在不在」最简洁的一条命令。
prlimit 查看/调整运行中进程限制
ulimit 的动态版:prlimit --pid 看目标进程的 rlimits,还能在线修改软/硬限,不用重启服务。
ltrace 跟踪库函数调用
看进程调用了哪些库函数(malloc/strcmp/getaddrinfo...):定位「代码走到了哪一步、参数是什么」,与 strace 互补。
场景:看进程卡在哪个内核点
没有 strace 权限/不想打扰进程时:wchan 一列直接告诉你它在等什么(IO、锁、网络),排查 D 状态与卡顿的轻量手段。
场景:托管进程反复失败的处理
supervisor 里的进程 restart 后秒退:先看它自己的日志与退出码,再判断配置(命令路径/用户/环境)问题,别反复无脑 restart。
场景:操作前确认进程身份
自动化脚本「查进程→杀进程」之间进程可能已退出、PID 被复用:用启动时间/命令指纹双重校验后再动手,避免误杀。
场景:把折腾任务钉到指定核
跑压测/挖矿类干扰任务前:用 taskset 圈定 CPU 范围,把影响限制在预留核上,保护核心业务。
script 录制终端会话
把终端操作全过程录下来:事故复盘、交接演示、取证留痕;--timing 计时文件配合 scriptreplay 还能回放。
chrt 调整调度策略
查看/设置进程调度策略与优先级:普通任务 SCHED_OTHER,实时任务 FIFO/RR;只在确实需要时使用,滥用会让系统饿死。
pwdx 查看进程工作目录
一行拿到进程的当前工作目录:pwdx PID;定位「相对路径写到了哪里」「脚本从哪个目录启动」等疑点。
磁盘与文件系统
分区、挂载、容量分析与 inode 排查
场景:磁盘满的 5 步排查法热门
线上告警磁盘使用率 95%+,按这套顺序逐步定位到具体目录/文件/进程,避免无头绪乱删。
df 查看文件系统磁盘空间热门
df 报告各挂载点文件系统的已用/可用空间,是判断磁盘是否写满的第一条命令;-h 人类可读、-i 看 inode、-T 看文件系统类型。
du 统计目录与文件占用热门
du 递归汇总目录占用的磁盘块数,是定位「谁把磁盘吃满」的主力工具;-s 只出总计、--max-depth 控制深度、--exclude 跳过缓存目录。
mount 挂载文件系统热门
mount 把块设备、网络存储、镜像或伪文件系统挂到目录树;-o 控制挂载行为(ro/rw/noatime/nosuid),-a 按 fstab 全量挂载。
场景:inode 耗尽排查(No space left on device)热门
磁盘还有空间却报 no space left on device,多半是 inode 用尽:海量小文件(session、缓存、邮件队列)是元凶。
lsblk 查看块设备树
lsblk 以树状图列出磁盘、分区、RAID/LVM 映射与挂载点;-f 显示文件系统与 UUID,-p 显示 /dev 完整路径,排查「磁盘加了但没挂上」第一站。
/etc/fstab 开机自动挂载配置
fstab 定义系统启动时如何挂载各文件系统:设备、挂载点、类型、选项、dump、pass 六列;写错轻则报警重则进不了系统。
dd 镜像备份/克隆与写盘
dd 按块复制一切(设备、镜像、内存盘),用于整盘克隆、备份引导区、生成测试文件;参数写错(if/of 互换)会瞬间覆盖数据。
场景:删除文件后空间不释放
df 显示满、du 找不到大文件——典型是已删除但进程仍持有句柄的文件;定位并安全释放。
mkfs 格式化文件系统
mkfs 是「创建文件系统」的统一入口,实际按 -t 调用 mke2fs/xfs/btrfs 等;格式化会覆盖超级块与元数据,操作前必须二次确认盘符。
lsof 定位已删除文件与磁盘占用
lsof 列出进程持有的文件、目录、socket 与设备句柄;磁盘「删了文件还不释放空间」、「谁占着这个目录」都靠它定位。
场景:开机挂载失败进 emergency mode
服务器重启后卡在 emergency mode,最常见原因:fstab 设备不存在/UUID 变了/网络存储不可达;按步骤进系统并修好挂载配置。
umount 卸载文件系统
umount 断开挂载并刷写缓存;device busy 说明目录仍被进程占用,需用 lsof/fuser 找到占用者优雅退出,别硬拔存储。
LVM 逻辑卷管理总览(PV/VG/LV)
LVM 在磁盘与文件系统之间加一层抽象:PV(物理卷)→ VG(卷组)→ LV(逻辑卷),支持在线扩容、快照与跨盘组合,服务器事实标准。
场景:LVM 在线扩容数据盘
数据盘快满,底层还有空间或已加新盘:按 PV → VG → LV → FS 四层顺序扩上去,全程在线不中断。
fdisk 管理 MBR/GPT 分区表
fdisk 是经典的交互式分区工具,支持 MBR(DOS)与 GPT;n 新建、d 删除、p 打印、t 改类型、w 写入生效,写盘前一切操作都不落盘。
场景:新加一块盘从分区到挂载全流程
云上/机房新挂数据盘,按识别盘 → 分区 → 格式化 → 挂载 → fstab 持久化一次做对,含对齐与 UUID 要点。
blkid 查询块设备 UUID 与类型
blkid 读取块设备超级块,输出 UUID、TYPE、LABEL,是写 /etc/fstab 时获取稳定标识的命令;设备名会漂移,UUID 不会。
lvextend 扩容逻辑卷
lvextend 给 LV 追加空间,-r 顺带在线扩文件系统(调用 resize2fs/xfs_growfs),是服务器加盘扩容最常用的一条命令。
xfs_growfs 在线扩容 XFS
XFS 支持在线增长:底层块设备扩容后,对挂载点执行 xfs_growfs 即可把文件系统撑满;XFS 不能缩小,容量规划要一次到位。
swap 配置与查看
swap 是内存不足时的兜底:swapon/swapoff 启停、mkswap 制作、fstab 持久化;内存吃紧与 OOM 排查必须先看 swap 使用。
场景:文件系统变只读(Read-only file system)
写文件报 Read-only file system:多为内核检测到 IO 错误后把 FS 置为 ro 自保;先取证再决定修复或换盘。
gdisk 管理 GPT 分区表
gdisk(GPT fdisk)专做大容量磁盘的 GPT 分区:支持 2TB+、128 个分区、备份分区表;老 fdisk 对 GPT 支持有限时用它更稳。
e2fsck 修复 ext 文件系统
e2fsck(fsck.ext4)检查并修复 ext 系列不一致;必须先卸载或只读挂载,否则可能把文件系统改得更碎。
resize2fs 调整 ext 文件系统大小
resize2fs 在线/离线扩展或缩小 ext2/3/4:扩容可直接对挂载点执行,缩小必须离线且先 e2fsck,少做半步都可能毁数据。
场景:df 与 du 数字对不上怎么查
df 说 80%,du 加起来只有 40%:差异来自 deleted 句柄、被覆盖的挂载、稀疏文件或快照;系统化排查。
parted 脚本化分区与对齐检查
parted 支持 MBR/GPT、交互与命令行两种模式,能一条命令建盘建分区,也常用于检查 4K 对齐;对新盘初始化最省事。
smartctl 磁盘健康检查(SMART)
smartctl 读取硬盘/SSD 的 SMART 自检数据:健康状态、通电小时、重映射扇区、SSD 磨损;坏盘预警与定期巡检的标准工具。
findmnt 结构化查询挂载
findmnt 从 /proc/self/mountinfo 读挂载信息,输出清晰可脚本化:查某挂载用什么参数、来源设备、目标路径一条命令搞定。
stat 查看文件详细元数据
stat 展示 inode、权限、大小、时间戳(access/modify/change)与文件系统块信息,排 inode 与时间戳问题必备。
xfs_repair 修复 XFS 文件系统
XFS 专用修复工具:挂载状态下无法修复(除 -n 只读预检);日志脏且无法回放时按需 -L 清日志,风险需自担。
fuser 定位占用文件/端口的进程
fuser 一站式回答「谁在用这个文件、目录、挂载点或端口」;-k 还能直接按信号杀掉占用者,清理 device busy 场景效率极高。
fsck 统一文件系统检查入口
fsck 是各文件系统检查器的统一包装(按 fstab 或 -t 指定类型分发到 e2fsck/xfs_repair 等),开机自检与批量维护都用它。
sync 刷写缓存到磁盘
sync 把页缓存与文件系统日志强制写盘;拔盘、断电前、克隆后都用它确保数据落到稳定存储,也支持按文件/文件系统粒度刷写。
partprobe 刷新内核分区表
分区表写盘后内核仍持有旧视图,partprobe 通知内核重新读取,让新分区设备节点(/dev/sdb1)立刻出现,免于重启。
tune2fs 调整 ext 系列文件系统参数
tune2fs 用于修改 ext2/3/4 超级块级参数:保留块比例、挂载次数、检查周期、卷标与 UUID;不用重格式化即可调优。
vgcreate 创建卷组
vgcreate 把若干物理卷(PV)聚合成卷组,作为分配逻辑卷的资源池;加盘扩池用 vgextend,一个 VG 内的 LV 可跨盘分布。
inode 是什么与耗尽排查
inode 保存文件元数据而非文件名:小文件海量场景会「空间有富余但 inode 用尽」,写不进任何文件;df -i 是第一诊断命令。
tmpfs 内存文件系统
tmpfs 将文件放在内存(必要时溢出到 swap),重启即清空;/dev/shm、/run 用它提速,也能给高 IO 临时目录提速但要防吃光内存。
mdadm 查看与管理软 RAID
Linux 软 RAID(RAID0/1/5/10)的管理入口:-D 看状态、-S 停阵列、热替换故障盘、-A 重新装配;换盘流程和降级状态判断都靠它。
挂载安全与性能选项
常用挂载选项:noexec/nosuid/nodev 做安全收敛,noatime 减少元数据写,discard 实时 TRIM;写入 fstab 前务必 mount -o remount 验证。
ddrescue 数据救援复制
ddrescue 是坏盘克隆利器:跳过坏扇区、记录日志、支持多轮重试,把能读的数据先救出来,避免普通复制一遇坏块就整体中断。
swap 文件创建与启用
无独立分区时用文件做交换空间:fallocate/dd 建文件、mkswap 格式化、swapon 启用、fstab 持久化;云主机扩容内存不足的常用低成本手段。
NFS 挂载与排错
中小企业共享文件的主流方案:服务端 exports,客户端 mount -t nfs;排错看 showmount、rpcinfo 与内核 nfs 错误信息。
losetup 管理 loop 设备
losetup 把镜像文件关联为块设备(/dev/loopN),实现挂载 ISO/磁盘镜像、在文件上建文件系统;-P 还能自动识别镜像内分区。
nvme-cli 查看 NVMe 盘健康
NVMe 专用管理工具:list 列盘、smart-log 看健康与磨损、error-log 看错误;比 smartctl 对 NVMe 更细,是判断「盘是否要换」的关键证据。
e2label 设置 ext 卷标
e2label 读写 ext 文件系统卷标,卷标可写进 fstab 的 LABEL= 实现比设备名稳定的挂载;XFS 用 xfs_admin -L,通用查看用 blkid。
场景:NFS 卡死导致命令挂起
mount 服务端失联后 df/ls 卡住、进程 D 状态不可杀:定位卡在哪个挂载、以 soft 挂载替代或强制卸载恢复。
bind mount 目录绑定挂载
把一个已存在目录挂到另一个路径(--bind):容器给宿主目录、chroot 环境、日志多路径访问都常用;/etc/fstab 里可持久化。
fstrim 释放 SSD 空间
SSD 删除文件后空间不会立即归还闪存:fstrim(或 systemd fstrim.timer)周期性通知设备 TRIM;对支持 discard 的云盘与 NVMe 是标配维护项。
XFS 项目配额(xfs_quota)
XFS 用 xfs_quota 做用户/组/项目配额;项目配额(prjquota)适合「一个目录一个配额」的共享存储场景。
用户与权限
账号、组、sudo 与目录权限
chmod 修改文件权限热门
chmod 以符号(u/g/o/a ± r/w/x)或八进制数字设置权限;特殊位 SUID/SGID/Sticky(4/2/1)也在其中,但滥用是把双刃剑。
sudo 以其他身份执行命令热门
sudo 按 sudoers 策略授权普通用户执行特权命令:-u 切换目标用户、-l 列权限、-i 进入登录 shell;替代 root 直登的核心工具。
useradd 创建用户热门
useradd 新建账号并维护 /etc/passwd、/etc/shadow、/etc/group;-m 建家目录、-s 指定 shell、-G 附加组,不加参数的用户几乎不可用。
passwd 设置与修改密码热门
passwd 管理本地账号密码:普通用户改自己、root 可重置他人;-l/-u 锁定解锁、-S 查看状态、--stdin 适合脚本批量设置。
场景:Permission denied 权限排查四步热门
访问文件被拒时按序检查:目标本身权限 → 路径各级目录权限 → 进程身份 → SELinux/挂载属性,别只盯着目标文件。
usermod 修改用户属性
usermod 调整已存在账号的组、家目录、shell、UID 与过期时间;-aG 追加组(最常用)、-L/-U 锁定与解锁。
chown 修改文件属主与属组
chown 改变文件所有者(用户与组);-R 递归、-h 处理符号链接本身,属主属组用 用户:组 语法。
id 查看用户身份与组
id 显示当前或指定用户的 UID、主组与全部附加组;排查权限问题时第一命令,-u/-g/-G 便于脚本取值。
场景:新员工账号开通标准流程
从建组、建号、配权限到验证登录,一条脚本化流程落地,避免权限遗漏或过度授权。
chage 密码有效期与账号老化
chage 配置密码老化策略:最长/最短使用期、到期前警告、过期后宽限与账号禁用日;等保与基线检查的重点项。
账号锁定与禁用三件套
禁用账号有三层:passwd -l 锁密码、usermod -s /sbin/nologin 禁交互、chage -E 过期日期;按场景组合使用才彻底。
场景:忘记 root 密码的恢复
物理机/控制台可进入 GRUB 的场景:单用户模式改密;云主机优先用控制台重置。涉及重启与停机,务必走变更流程。
su 切换用户身份
su 切换用户:su - 进登录 shell 并重置环境,su 保留当前环境变量;运维中最常见的坑都在环境变量与 PATH 上。
场景:sudo 报错排查(不在 sudoers / command not allowed)
用户执行 sudo 被拒:先分清是「未授权」还是「命令未授权」,再看 policy 来源(主文件/drop-in/LDAP),按审计日志定位。
setfacl 配置访问控制列表
setfacl 在传统 rwx 之外按用户/组精细授权:-m 添加规则、-x 删规则、-R 递归、-d 设默认 ACL(目录内新文件自动继承)。
/etc/passwd 与 /etc/shadow 字段结构
理解这两个文件的字段是排查登录问题的基本功:passwd 七段(名:密码占位:UID:GID:注释:家:shell),shadow 九段(含密码哈希与老化)。
userdel 删除用户
userdel 删除账号;-r 同时删家目录与邮件池,但不会自动清理散落在他处的文件(多数场景下需要手工 find 处理)。
visudo 安全编辑 sudoers
visudo 带语法检查地编辑 sudoers 配置:保存时校验,拒绝写入错误语法,避免一次手滑让全机失去 sudo。
fail2ban 登录失败封禁框架
fail2ban 监控认证日志、按规则统计失败次数并自动封禁来源 IP;拒绝 SSH 爆破的标配,配合防火墙生效。
umask 控制新建文件默认权限
umask 定义新建文件/目录要被屏蔽掉的权限位:022 得到 644/755、027 得到 640/750;会话级设置,持久化写 /etc/profile 或 login.defs。
last 查看登录历史
last 读取 wtmp 展示用户登录/注销与来源 IP、时长;安全排查(谁在什么时候登过)与容量核对都要用。
特殊权限位:SUID/SGID/粘滞位
三组特殊位改变执行语义:SUID 以属主身份运行、SGID 继承属组(目录则继承组)、粘滞位(/tmp 的 1777)限制删除他人文件。
groupadd 创建用户组
groupadd 新建组并分配 GID:-r 建系统组、-g 指定 GID;组是权限分配的基本单位,比逐用户授权好维护得多。
/etc/login.defs 全局账号策略
login.defs 控制 useradd/passwd 的全局默认:UID/GID 范围、密码最大天数、umask、家目录创建策略;密码策略与等保的落点。
sudoers 语法深潜:别名与 NOPASSWD
sudoers 支持 User_Alias/Host_Alias/Cmnd_Alias 组织策略:按角色授权、按命令白名单最小化;NOPASSWD 只给自动化账号。
gpasswd 管理组成员
gpasswd 维护组的成员列表与组密码:-a 加人、-d 删人、-M 设置完整名单、-A 指定组管理员;比 usermod -aG 更适合团队组管理。
pwquality 密码复杂度策略
pam_pwquality 控制口令复杂度(长度、字符类别、字典检查、重复限制),通过 /etc/security/pwquality.conf 与 PAM 生效。
服务账号与 nologin shell
系统/服务账号不给人登录:shell 设 /sbin/nologin(或 /usr/sbin/nologin),配合锁定密码;检查与创建一条龙。
chattr 设置文件不可变属性
chattr 在 ext4/XFS 上给文件加内核级属性:+i 不可修改(连 root 都改不了)常用于加固关键配置、+a 只追加(日志防篡改)。
场景:团队共享目录权限设计
多人协作目录的经典需求:组内可写、新文件属组正确、互不误删;用 SGID + 默认 ACL + umask 三板斧落地。
chgrp 修改文件属组
chgrp 单独修改文件/目录的所属组,语法比 chown 更贴近只是换组的场景;-R 递归、--reference 参照复制。
sudo 操作审计与日志
sudo 默认记录每条命令:Debian 在 /var/log/auth.log、RHEL 在 /var/log/secure、systemd 环境在 journal;审计排查「谁动了什么」从这里开始。
groupmod 修改组名与 GID
groupmod 改组名(-n)或 GID(-g);改 GID 时既有文件的属组不会自动跟随,需要手工 find + chgrp 修正。
groups 查看用户所属组
groups 快速列出用户的主组与附加组;等价于 id -Gn,适合写在排查脚本第一行确认身份来源。
检查组成员关系
账号问题常是组问题:id 看当前有效组、groups 看归属、getent group 看全组成员;嵌套组与 AD/LDAP 环境以 getent 为准。
getfacl 查看 ACL 权限
getfacl 输出文件/目录的完整 ACL(含默认 ACL 与 mask),是排查「明明授权了却访问不了」的关键工具。
安全巡检:查找 SUID/SGID 文件
定期盘点全盘 SUID/SGID 是基础安全动作:find -perm 找出清单,与基线比对;新出现的 SUID 二进制优先审计。
groupdel 删除用户组
groupdel 删除组记录;只要还有用户以它为主组就不能删,需先把用户的 -g 迁移到别的组。
lastlog 查看各账号最近登录
lastlog 汇总每个用户最后一次登录时间与来源 IP;快速发现长期未登录的僵尸账号或异常登录。
lsattr 查看文件系统属性
lsattr 显示文件/目录的 ext4 属性位(i/a/d 等),排查不可删改文件、审计加固效果时配合 chattr 使用。
批量创建账号与初始密码策略
批量建号:for 循环 useradd + chage 强制首登改密 + 加入组;或 newusers 批量导入,适合新团队/实验环境初始化。
whoami 显示当前有效用户名
whoami 打印当前有效用户名(等价 id -un);配合 sudo -u 或 su 后验证身份,也是脚本判断权限上下文的最简手段。
/etc/skel 新用户家目录模板
/etc/skel 里的文件在 useradd -m 时被复制进新家目录,用于统一默认 shell 环境、别名与目录结构;改后只影响新用户。
useradd 默认值与 /etc/default/useradd
新建账号的默认家目录、shell、骨架、过期策略由 /etc/default/useradd(RHEL 系)或 /etc/adduser.conf(Debian)控制;改默认比每次都带参数省事。
日志与排查
journalctl、消息日志与故障定位
journalctl 查询 systemd 日志热门
journalctl 是 systemd 时代的日志总入口:按服务、时间、优先级、启动轮次过滤,-f 实时跟踪、-u 按单元、-xe 跳转到错误尾部,server 排障第一命令。
tail 实时跟踪日志热门
tail -f 是盯日志的标配:-n 定行数、-F 跟随轮转后的新文件(比 -f 强)、配合 grep 过滤;排查进行中问题必用。
dmesg 查看内核日志热门
dmesg 读内核环形缓冲区:内核启动、驱动加载、磁盘/网络错误、OOM 都在这;-T 转人类时间、--level 过滤级别。
场景:服务反复崩溃怎么查日志热门
服务 restart 循环:从 systemd 状态到应用日志逐层定位,先看退出码,再看崩溃前最后输出与内核记录。
journalctl -u 按服务查看日志
以服务为单位过滤是最高频的排障姿势:-u 服务名 + -n/-f/--since 组合,直达应用与 systemd 的启动错误。
grep 日志检索与上下文
在日志里大海捞针靠 grep:-i 忽略大小写、-A/-B/-C 带上下文、-E 多模式、--color 高亮;配合 tail/awk 形成组合拳。
场景:OOM Killer 杀进程排查
服务凌晨被杀、SSH 时断时续:dmesg/journal 里的 OOM 记录会给出被杀进程与内存全景,按证据调整而不是瞎加内存。
logrotate 日志轮转配置
logrotate 按计划切割、压缩、清理日志:daily/rotate/compress/maxsize 是核心参数,配置错误会导致日志不切或磁盘被日志吃满。
场景:SSH 登录失败排查(认证被拒)
SSH 提示 Permission denied (publickey,password):按 认证方式 → 权限 → 日志 三层排查,sshd -T 直接读出生效配置。
认证日志(/var/log/secure 与 auth.log)
登录与 sudo 的审计现场:RHEL 系 /var/log/secure、Debian 系 /var/log/auth.log;查爆破、提权与登录失败全在这里。
less 分页阅读大日志
less 是读大文件的标准姿势:支持搜索、跳转、实时跟随(Shift+F),且不会像编辑器一样把文件全载入内存。
开机启动日志排查(boot 阶段)
开机异常:journalctl -b 里看本次启动、dmesg 看内核、systemd-analyze 看耗时、rescue/emergency 场景看失败单元。
/var/log/messages 与 /var/log/syslog
传统 syslog 文件:RHEL 系主文件 /var/log/messages、Debian 系 /var/log/syslog;rsyslog 负责落盘,字段与 journal 互补。
awk 按字段统计日志
日志分析进阶:awk 提取列、计数、聚合、求 Top;Nginx 访问日志、认证失败统计的常用一行流。
场景:磁盘错误日志与坏道预警
I/O error、EXT4-fs error、ata bus error…内核与 SMART 的磁盘告警要尽早处理:先隔离数据,再决定修复或换盘。
场景:系统进 emergency 后的日志自救
卡在 emergency:journalctl -xb 看本次启动失败项,按失败单元/挂载逐项处理,必要时屏蔽问题单元再继续启动。
journalctl -b 按启动轮次排查
排查重启类问题先锁定哪次启动:-b 当前、-b -1 上一次,--list-boots 列出全部轮次,再逐轮比对定位引入问题的变更。
journalctl -p 按优先级过滤
journal 日志分 emerg~debug 8 级,-p err 只看错误以上、-p warning 配 --since 做巡检;把噪音过滤掉是读日志效率的关键。
journald 日志持久化配置
默认 journal 可能是易失的(内存):/var/log/journal 不存在时重启即失忆;SystemMaxUse 等参数控制保留策略。
strace 跟踪系统调用定位故障
strace 观察进程与内核的交互:卡在哪、报了哪个错误号、读写了什么文件;排查启动失败与性能卡顿的终极放大镜。
排查管道:把日志处理成线索
日志排查的组合拳:时间窗定位 → 关键词过滤 → 频次统计 → 关联单元;一条管道从海量日志到几个可疑点。
ulimit 资源限制查看与调整
ulimit 控制进程可用的资源上限:打开文件数、core 大小、栈;服务崩溃报 why 或 Too many open files 时逐层核对。
场景:应用报错的全链路关联排查
应用 500 → 容器/服务日志 → journal 系统层 → dmesg 内核层:自下而上或自上而下把同一时间窗的四层证据串起来。
场景:日志断档/被清空怎么排查
日志突然没有新内容或历史消失:依次核对 写入方(服务)、轮转(logrotate)、空间(磁盘满)、journal 配置与人为操作。
lsof 直查进程句柄问题
服务报 Too many open files、文件消失、端口占用:lsof 按进程/文件列出句柄,与 ulimit 搭配定位句柄泄漏与配置错位。
journalctl 时间窗口过滤语法
--since/--until 支持相对与绝对时间:yesterday、-1h、'2 hours ago'、'2026-10-12 09:00';排障先框时间窗再层层过滤。
coredumpctl 查询崩溃转储
systemd-coredump 接管后进程崩溃转储存在 journal 体系里,coredumpctl 可以直接列出、查看与提取 core 文件交给 gdb 分析。
journal 导出 JSON 做分析
journalctl -o json 把日志导成结构化数据,交给 jq 过滤聚合;比肉眼翻文本更适合统计与联动告警。
rsyslog 配置与日志分散治理
rsyslog 决定哪些日志落到哪个文件/远端:规则按 facility.severity 匹配,改完 service rsyslog restart 生效,是日志治理的地基。
journalctl 清理:--vacuum-size/--vacuum-time
journal 长期积累可吃掉数 GB:按大小或时间裁剪归档(不影响活动文件),先看占用再执行;根治要改 journald 配置。
统计 SSH 失败登录来源与联动封禁
爆破排查:从 auth 日志统计失败 IP 与用户名 TopN,判断攻击面并联动 fail2ban/firewalld 封禁;先统计后处置。
场景:多服务/多文件日志同时盯
演习或上线观察时要同时看多个日志源:multitail、tmux 分屏或 tail -F 多文件 + 文件名前缀,别开会话刷屏。
rsyslog 远程日志集中收集
多机日志集中到日志服务器:服务端开 514/tcp(现代更推荐 RELP/TLS),客户端配 *.* @@host:514 转发;集中后才能做关联分析。
journal 结构化输出与 jq 分析
journalctl -o json 把每条日志变成结构化对象:字段筛选、统计、导出给分析脚本;比逐行 grep 强大得多。
日志时间戳换算与窗口对齐
跨系统排查要把 epoch、UTC、本地时间对齐:date -d @秒、TZ=UTC date 与 iso 输出互转,避免「顺序对不上」的假象。
logrotate 调试:-d 干跑与 -v 详查
轮转不生效先别改配置:-d 干跑显示「会做什么」,-v 观察真实执行细节,state 文件与 privilege 是两大常见坑。
logger 手动写入日志
logger 把消息按 syslog 协议送进本地日志(journal/rsyslog),用于测试日志链路、标记变更时间点;-t 打标签、-p 指定级别。
限制 journal 磁盘占用
journald 默认最多用磁盘的 10%:在系统盘/日志盘分离的机器上经常过大或过小,SystemMaxUse/SystemKeepFree 一对参数定边界。
内核日志级别与 printk 调整
内核日志级别由 printk 控制:控制台太吵或太安静都靠它调;排错时可临时降到 info 级别观察驱动行为。
watch 周期刷新观察状态
watch 每几秒重跑一条命令:盯日志尾部、连接数、容量变化都很顺手;-d 高亮变化、-n 调间隔,退出即停不占资源。
systemd 与服务
服务管理、开机自启与单元文件
systemctl 服务管理总入口热门
systemctl 管理 systemd 单元:start/stop/restart/reload 控制运行态,enable/disable 控制开机自启,status 看现状;Linux 服务管理的事实标准。
场景:服务起不来七步排查法热门
服务 systemctl start 失败:从语法、环境、权限、端口、依赖到资源逐层排除,标准动作一次跑完定位根因。
systemctl status 读懂服务状态热门
status 输出:Loaded(是否自启/单元文件路径)、Active(运行态与时长)、Main PID 与最近日志;一眼判断服务健康度。
systemctl enable/disable 开机自启
enable 把单元接入启动目标(建软链接),disable 反向拆除;--now 同时启停,is-enabled 核对结果,是最易被想当然的环节。
编写一个生产级 .service 单元
自建服务落成 systemd 单元的完整要点:ExecStart 绝对路径、User 降权、Restart 策略、日志与依赖、环境变量。
systemctl start/stop/restart/reload 语义区别
四个动作语义不同:start 幂等拉起、stop 停止、restart 全停再起、reload 平滑重载配置;生产变更选错动词就是事故。
systemd timer 单元结构
定时任务的 systemd 形态:.timer 定义时间表、配套 .service 定义动作;精度高、可看上次/下次触发,是 cron 的现代替代。
systemctl --failed 巡检失败单元
一条命令列出所有进入 failed 状态的单元,登录机器后的标准体检动作;配合 reset-failed 清理历史失败状态。
systemctl daemon-reload 重载单元定义
编辑/新增单元文件后必须 daemon-reload:让 systemd 重新读取磁盘定义;它不重启服务不重载配置,别与 reload 混淆。
服务 Restart 策略与自愈
Restart=on-failure + RestartSec 实现崩溃自愈;但要配合 StartLimit 防大崩循环,看门狗类服务用 Type=notify。
systemctl 单元日志快速定位
status 片段不够用时:journalctl -u 与 status 组合定位服务问题;本条目给出一套「看日志找原因」的标准动作。
systemctl edit 安全覆盖单元配置
不改上游单元文件,用 drop-in 覆盖:systemctl edit 服务名 打开 override.conf,重启即生效;升级软件包也不冲突。
systemd 资源限制(LimitNOFILE 等)
服务级资源限制都在单元里声明:LimitNOFILE、LimitNPROC、MemoryMax、CPUQuota;systemd 服务不吃 limits.conf,别配错地方。
systemctl is-active/is-enabled 脚本判活
脚本里判断服务状态用 is-active(输出 active/failed 并给退出码)、is-enabled、is-failed;不要解析 status 文本。
systemd 服务安全加固选项
systemd 提供免 SELinux 的服务沙箱:ProtectSystem、PrivateTmp、NoNewPrivileges 等,逐项收紧自研服务攻击面。
systemctl cat 查看单元完整定义
systemctl cat 输出单元及其所有 drop-in 的合成内容与来源路径,是确认「最终生效配置」的唯一可靠方式。
systemd target 运行级别管理
target 取代传统 runlevel:multi-user.target 对应多用户文本、graphical.target 图形;get-default/set-default 与 isolate 切档。
服务环境变量注入(EnvironmentFile)
systemd 服务环境变量三种写法:单元内联 Environment=、外部 EnvironmentFile=、以及 ExecStart 里显式 env;敏感配置放文件并用 600 权限。
场景:用 rescue/emergency 目标恢复系统
系统服务大面积异常时进入 rescue 目标(单用户)做维护:只启基础服务、不拉网络与多用户业务,修完再切回。
systemd-analyze 启动性能分析
开机慢了三板斧:systemd-analyze time 总量、blame 各单元耗时、critical-chain 关键路径;定位并优化启动瓶颈。
systemctl reset-failed 解除启动限制
服务短时间反复失败后 systemd 会停止再拉起(StartLimitBurst),reset-failed 清计数后才能重新 start;排障修复后的必要一步。
systemctl list-units 盘点单元清单
查所有已加载单元及其状态:--type=service 聚焦服务、--state=running 只看运行中、--all 含 inactive;巡检与资产盘点基础。
systemd OnCalendar 时间语法
OnCalendar 支持 daily、*-*-* 03:00:00、Mon..Fri、每分钟等表达式;systemd-analyze calendar 能即时验证写法与下次触发。
journalctl 按单元与 PID 过滤
服务日志精确定位:-u 单元、_PID= 字段、-t 标识符组合过滤;比 grep 文本更准确,不受日志格式影响。
systemd 模板单元与多实例
模板单元(@.service)用一个文件拉起多实例:myapp@cluster1.service 等;%i 变量注入实例名,多租户/多端口场景利器。
systemctl mask 彻底屏蔽单元
mask 把单元链接到 /dev/null,连依赖拉起都会被拒;比 disable 更彻底,用于强禁服务或隔离故障单元。
容器运行时与 systemd 集成要点
docker/containerd 由 systemd 托管:单元关系、重启策略冲突、开机自启与日志驱动都是常见故障点。
systemd 单元文件存放路径
单元文件按优先级生效:/etc/systemd/system > /run/systemd/system > /usr/lib/systemd/system;自建服务放 /etc 下最稳。
systemd-run 临时运行/一次性任务
systemd-run 即时拉起临时单元:--unit 命名、--on-active 延迟、--scope 加入当前会话 cgroup;调试与压测的轻量容器。
drop-in 目录组织与 .d 约定
所有单元支持 <unit>.d/ 目录扩展:.conf 文件按名称排序生效;理解排序与合并规则才能安全地做多来源定制。
systemd-analyze 启动分析与体检
启动慢、单元有隐患时用:blame 看各服务耗时、critical-chain 找串行瓶颈、verify 校验单元语法;上线 unit 前的自检工具。
systemd-analyze verify 单元语法检查
改完单元文件先 verify:语法错误、不存在的可执行文件、循环依赖都能提前发现,避免 restart 失败才发现。
systemctl --user 用户级单元
普通用户自己的服务与定时器:单元放 ~/.config/systemd/user/,journalctl --user 查看;不用 sudo 也能给个人任务做守护与开机自启。
systemd .mount 挂载单元
systemd 把挂载也单元化:.mount 文件由 fstab 自动生成(systemd-fstab-generator),也可手写;依赖顺序与自动挂载都受 systemd 编排。
systemd 自动挂载(automount)
.automount 单元实现按需挂载:访问路径时才挂载底层 .mount,配合 noauto 与超时策略,适合不常用的大容量存储。
hostnamectl 管理主机名
查看与修改静态/瞬态主机名、查看虚拟化与操作系统信息;比手改 /etc/hostname + hostname 命令更完整(会同步 systemd 状态)。
systemctl getty 与串口控制台
getty@tty1、serial-getty@ttyS0 管理控制台登录:不登录也要留的后门通道,云主机串口/VNC 救援依赖它们。
systemd-tmpfiles 清理临时文件
系统级临时文件生命周期管理:/usr/lib/tmpfiles.d 定义规则、systemd-tmpfiles --clean 按年龄清理、--create 补建目录;守护哪些目录被自动清空的底层机制。
path unit 目录/文件变化触发
用路径变化替代轮询:PathExists/PathChanged/DirectoryNotEmpty 触发对应 service,适合「文件一到位就处理」的流水线。
cgroup 资源树查看:systemd-cgls/cgtop
从 cgroup 视角看进程归属与资源:cgls 打印单元进程树、cgtop 实时看各 slice 的 CPU/内存占比,定位「谁吃掉了资源」的第三只眼。
systemctl get-default 查默认目标
确认系统默认启动到哪个 target(文本/图形),安装桌面组件或云镜像切换后常需核对。
socket 单元与按需启动
socket 激活:监听端口的 socket unit 先启动,首个连接到达才拉起对应 service(systemd 把监听 fd 传给它),降内存也提启动速度。
包管理
yum/dnf/apt 安装更新与依赖处理
dnf 新一代 RPM 包管理器热门
dnf 是 RHEL8+/Fedora/CentOS Stream 的标准包管理器,替代 yum:安装、更新、删除、历史回滚一条龙,依赖解析更稳。
apt 与 apt-get 命令对照热门
Debian/Ubuntu 的包管理:apt 面向交互(输出友好),apt-get/apt-cache 面向脚本(稳定接口);update 刷索引、install/remove 动包。
yum 经典包管理命令热门
yum 是 CentOS 7 与 RHEL 7 时代的标准包管理器(RHEL8+ 已由 dnf 接棒):安装、查询、仓库与组管理。
apt-get 稳定接口与常用组合
脚本与定时任务里首选 apt-get:-y 免交互、--no-install-recommends 精简依赖、-f 修依赖、--dry-run 预演。
仓库配置(yum.repos.d 与 sources.list)
包从哪来由仓库定义:RHEL 系 /etc/yum.repos.d/*.repo、Debian 系 /etc/apt/sources.list(.d);启用/禁用与优先级都在这里。
rpm 底层包操作与校验
rpm 直接操作 .rpm 与数据库:-i 安装、-U 升级、-e 卸载、-V 校验文件完整性、-qp 查询包文件;绕过依赖但获得精细控制。
场景:安全补丁批量更新流程
等保/巡检面前要有补丁流程:先盘点(updateinfo/公告)→ 快照备份 → 分批升级 → 重启与验证,可审计可回退。
dpkg 底层 Debian 包操作
dpkg 是 Debian 的底层工具:-i 装本地 deb、-l 列表、-L 文件清单、-S 反查归属、--configure -a 修复到一半的事务。
场景:用 dnf history 回滚一次失败更新
更新踩坑(服务起不来/依赖不兼容)时优先事务回滚:dnf history 定位事务号、info 评估影响、undo/rollback 反转。
dnf/yum search 与 provides 反查
找包不靠猜:search 按名称/描述搜索、provides 按文件/能力反查(which 到的命令属于哪个包)、info 看详情。
场景:dpkg/apt 事务损坏修复
apt 报 dpkg 被中断、有未配置包、无法获得锁:按「找锁 → configure -a → -f install → 必要时 dpkg 卸载」顺序修复。
dnf/yum check-update 与补丁窗口
变更窗口先体检:check-update 列出可升级包(含安全公告)、updateinfo 查 CVE 补齐,确认范围后再执行升级。
场景:离线/内网环境安装软件包
无外网的服务器:在联网机下载全量 RPM/DEB(含依赖)→ 传输 → 本地仓库或直接安装;要点是依赖闭包完整性。
rpm -V 校验系统文件完整性
rpm -Va 对比数据库与磁盘:文件缺失、大小/权限/时间变化都会报;排查入侵篡改与误改配置的利器。
alternatives 多版本切换(java 等)
同一命令多版本共存(java、python、editor):alternatives/update-alternatives 维护符号链接优先级,切换全局默认版本。
apt list/search 查询包
查已装、可装与版本:apt list --installed、apt list --upgradable、apt-cache show/policy;升级前评估范围。
EPEL/额外仓库管理(dnf config-manager)
EPEL 等第三方仓库在 RHEL 系很常见:用 config-manager 启用/禁用、加 repo、管优先级,避免「装了打不开」的意外。
场景:锁定/降级软件包版本
防止仓库更新意外升级关键组件:versionlock(RPM)与 apt-mark hold(DEB)锁定;降级需显式指定旧版本。
GPG 密钥导入与校验失败处理
装第三方 RPM 报 GPG 校验失败:核对指纹、导入正确的公钥;apt 同理(signed-by/keyring);校验失败绝不粗暴 --nogpgcheck。
dnf repoquery 精确查询包元数据
repoquery 面向脚本的查询子命令:可用版本、依赖树、文件清单、被谁依赖,比 list/search 更精确。
场景:安装本地 rpm/deb 包
拿到离线包:优先用包管理器装本地文件(dnf install ./x.rpm 自动解依赖;apt install ./x.deb 同理),比裸 rpm -i/dpkg -i 省心。
dnf/yum 缓存清理与元数据修复
报错 Error: Failed to download metadata、cache 冲突或下载慢时:clean all + makecache 重建缓存;必要时换镜像源。
包管理器缓存与磁盘占用治理
/var/cache 下长期积累的包缓存(dnf/yum/apt)能吃掉数 GB:了解清理命令与安全边界,定期回收。
rpm 查文件归属与包内容
定位「这个文件属于哪个包/这个包装了什么」:rpm -qf 文件反查、-ql 列文件、-qc 列配置、-qd 列文档;排障与合规清点两相宜。
源码编译安装与包管理的边界
configure/make/make install 绕开包管理器:能装但难卸载难升级;了解 prefix、ldconfig 与「何时该编译」的决策线。
盘点已安装软件包清单
资产与合规视角的包清单:rpm -qa / dpkg -l 导出,配合装机基线比对差异;升级/迁移前的基础数据。
判断哪些服务需要重启
安全更新后「装了新库,进程还在跑旧库」:needs-restarting -r(RHEL) / needrestart(Debian)告诉你要不要重启、哪些服务要重启。
DNF module 流:多版本软件源
模块化仓库让同一软件多版本共存(如不同 PHP 流):dnf module list 查看、enable 选择流、switch-to 切换;装错流是版本不符的常见根源。
dpkg 反查文件归属与包内容
Debian/Ubuntu 版的 rpm -qf/-ql:dpkg -S 找文件属主包、-L 列包文件、-s 看包状态、-V 校验文件完整性。
rpm2cpio/dpkg-deb 解包应急取文件
包装了但文件缺失、或想不改系统拿某个工具:rpm2cpio 与 dpkg-deb 直接把包解开看内容/取文件。
apt 版本固定:preferences 与 hold
阻止软件被升级有两种手段:apt-mark hold 快速按住单个包;/etc/apt/preferences.d 按仓库/Pin 精细控制优先级,适合混合源环境。
snap/flatpak 通用包格式速览
通用包格式(snap/flatpak)自带运行时与沙箱:适合桌面与边缘场景;服务器传统托管仍优先发行版包管理器。
DNF/YUM 软件组安装
软件组把一组包(如开发工具、GNOME)打包安装:group list 看清单、group install 一把装,比逐包拼清单省事。
zypper(SUSE)包管理速览
openSUSE/SLES 的包管理器:zypper in/rm/up、se 搜索、patterns 与仓库管理;跨发行版运维时的查漏补缺。
性能与监控
CPU/内存/IO/网络性能观测工具
top 实时进程与资源总览热门
top 是随叫随到的性能第一现场:默认按 CPU 排序,1 展开多核、M 按内存、P 按 CPU、k 杀进程、Shift+W 保存配置。
uptime 与平均负载热门
uptime 一行给三件事:当前时间、开机时长、1/5/15 分钟平均负载;负载是「可运行+不可中断」进程数,不等于 CPU 使用率。
free 内存与 swap 使用热门
free 一眼看清内存分布:total/used/free/buff-cache/available;判断「内存够不够」要看 available 而不是 free。
场景:CPU 负载高怎么定位热门
负载高先分清三类等待:CPU 排队、IO 等待、锁/切换风暴;按表排查,10 分钟内给出方向。
iostat 磁盘 IO 性能分析
iostat 报告设备级 IO:tps、读写吞吐、await(含排队延迟)、%util;定位磁盘瓶颈的标准工具(sysstat 包)。
ss 查看套接字与连接状态
ss 是 netstat 的现代替代:-t/-u 按协议、-l 听着的、-a 全部、-p 进程、-s 汇总、state 过滤,看连接与端口效率极高。
vmstat 系统级资源速览
vmstat 把 CPU、内存、IO、上下文切换压进一行:r 队列长度、si/so 换页、bi/bo 块 IO、cs 切换、wa 等待,老二样之外最实用。
场景:磁盘 IO 慢怎么定位
应用变慢怀疑磁盘:从设备利用率到进程归因,再到文件级热点,四级下钻。
场景:内存不足与 swap 抖动定位
系统卡顿+swap 活动高:判断是真内存不足、缓存策略问题还是泄漏;处理顺序是先保命再根治。
ps 进程快照速查
ps 的排查用法:按 CPU/内存排序、按状态过滤(D/Z)、看完整命令行与线程;etop 式一行流先看现场。
sar 历史性能数据回看
sysstat 的 sar 存下历史采样:过去某时段 CPU/内存/网络/IO 随时回看,排「昨天半夜为什么慢」类问题必备。
htop 交互式进程浏览器
htop 给 top 补上颜色、鼠标、树形视图与快捷过滤:F4 过滤、F5 树形、F6 排序、F9 杀进程,交互体验最好的终端监控。
iotop 谁在吃磁盘 IO
iotop 按进程显示实时读写速率与 IO 占比:定位「磁盘 100% 是谁干的」的直给工具,-o 只看活跃进程。
tcpdump 抓包初筛(只读统计)
网络问题先做流量画像:tcpdump -c 限量抓取 + 过滤表达式,配合 -w 落盘后再分析;避免在忙接口无限抓。
pidstat 按进程细粒度统计
pidstat 是「进程版 sar/iostat」:-u CPU、-r 内存、-d IO、-w 上下文切换、-t 线程级;定位具体进程的维度瓶颈。
场景:sy(系统态)CPU 高排查
us 不高而 sy 高:系统调用/软中断/资源竞争在吃 CPU;分方向(网络中断、锁、频繁 syscall)定位。
场景:判断内存是否泄漏(趋势法)
怀疑泄漏别靠感觉:定时记录 RSS/available,按小时均值画趋势;排除缓存与周期性任务后再定性。
mpstat 按核看 CPU 分布
多核机器上 CPU 不均:mpstat -P ALL 逐核显示 us/sy/soft/iowait,定位绑核、软中断与单核打满。
常见内核参数速查(性能相关)
少量关键 sysctl 解释:swappiness、oom_score_adj、tcp 缓冲区与连接队列;改前改后都可查可回滚。
场景:性能巡检基线怎么建
稳定的性能管理靠基线不是靠感觉:固定指标 + 固定频率 + 可视化;给出采集脚本与关键指标清单。
lscpu 与 CPU 拓扑信息
lscpu 汇总 CPU 型号、核数、线程、NUMA、缓存与虚拟化标识:性能分析与容量规划的静态底图。
sar -n 网络流量与错误统计
sar 的网络视图:DEV 看每网卡收发、EDEV 看错误丢包、SOCK 看 socket 统计、NFS/TCP 专项;做带宽基线与异常定位。
/proc 直读进程细节
比 ps 更底层的现场:/proc/<pid>/status、cmdline、environ、io、fd 提供内存、环境变量、IO 与描述符全景。
文件描述符上限与调整
高并发服务常见隐性瓶颈:Too many open files。三层限制(systemd LimitNOFILE / limits.conf / 内核 fs.file-max)各有边界,逐层核对才有效。
深入 /proc/meminfo 关键指标
/proc/meminfo 是内存真相源:MemAvailable、Dirty、Slab、Committed_AS 等指标能定位缓存、泄漏与超售风险。
time 与计时诊断命令
time 给出命令的真实/用户/系统耗时:real≫user+sys 说明在等 IO/网络/锁;-v 展开上下文切换与缺页等细节。
ss -s 与 socket 内存占用
ss -s 汇总当前 socket 数量与内存:连接数暴涨、TIME-WAIT 规模、socket 内存吃紧在这里一眼可见。
场景:容量+IO 联合巡检脚本
容量与 IO 要一起看:写满与写慢经常同源;给出一段巡检脚本输出可直接进日报。
CPU steal(虚拟化抢占)识别
云主机响应慢但各项指标不高的常见元凶:steal(st)表示宿主把你的 CPU 分给了别人;top/vmstat/sar 都能看到。
ethtool 网卡速率与错误统计
ethtool 读取/设置网卡链路:Speed/Duplex/Link、-S 驱动统计(丢包/错误/队列)、-g 环、-k 卸载特性;网络慢查硬件侧。
延迟观测入门(iowait 与调度延迟)
「服务慢但指标都正常」要看延迟分布:调度延迟(runqlat)、IO 延迟、应用内埋点三线并进;给出无 eBPF 环境的替代。
perf record/report 采样分析
Linux 自带性能剖析:perf record 采样调用栈、perf report 看热点函数;比 top 更进一步回答「CPU 花在哪个函数」。
dstat 多维度资源合成视图
dstat 把 CPU、磁盘、网络、内存合成宽表输出:一行同看所有维度,适合快速建立「系统在全方面什么状态」的整体画面。
netstat 传统网络统计(兼容)
老系统与老脚本仍用 netstat:-tulnp 查监听、-s 协议统计、-r 路由;新系统建议逐步迁移到 ss/ip。
PSI 压力指标:/proc/pressure
PSI(Pressure Stall Information)量化「多少时间在等资源」:cpu/io/memory 三类的 some/full 值比负载更贴近用户体验,是新一代关键指标。
watch/pidstat 组合做临时监控
没上监控系统时:watch + 一行指标命令就等于临时看板;记录时用 date + tee 落盘变成轻量指标日志。
sosreport 一键收集诊断信息
红帽系故障升级前的标准动作:sosreport 打包系统配置、日志、命令输出,脱敏后给厂商/团队分析。
追踪工具的开销与使用纪律
strace/perf/ltrace 都会拖慢目标:使用前理解开销、使用中限时限量、使用后复盘必要;给生产可用的替代策略。
bpftrace 快速上手
eBPF 动态追踪的单行工具:oneliners 查谁在调用某个系统调用、哪个进程读写最多、延迟分布;比 strace 更少侵入。
cgroup v2 资源限制观察
现代发行版默认 cgroup v2 统一层级:memory.max/cpu.weight/io.max 是单元与容器限制的落点,配合 systemd 资源指令可查可用。
slabtop 内核 Slab 占用排行
内存被内核对象吃掉(Slab 高)时用 slabtop 排序看具体缓存:dentry、inode_cache 等增长能解释「没进程吃内存」的怪象。
ifstat/nload 带宽实时观测
ifstat 给出简洁的每秒收发速率,nload 带图形条;临时压测/备份时看带宽占用最直接。
stress-ng 压力测试
CPU/内存/IO/网络全维度压测工具:验证扩容阈值、复现负载问题、测试监控告警是否触发;比 stress 功能更全。
numastat/numactl NUMA 视角
多路服务器内存分节点:进程跨节点访问内存会显著变慢;numactl 绑定、numastat 观察命中分布。
网络连接级监控补充
无 GUI 环境统计按连接/端口的流量:iptraf-ng 或 nethogs(按进程);定位「谁把带宽吃空」的补充视角。
auditd/审计对性能的影响
开启详细审计规则后 sys 与 IO 会上升:排查审计造成的性能问题与规则精简思路。
网卡多队列与中断均衡
单队列网卡遇上多核服务会形成单核软中断瓶颈:查队列数/中断分布、调 RPS/RSS 与 irqbalance,是万兆与高 PPS 场景的必查项。
IO 调度器选择与检查
块设备调度器影响延迟与吞吐:NVMe/SSD 常用 none(或 mq-deadline)、机械盘 mq-deadline;用 /sys/block/*/queue/scheduler 查看与调整。
定时任务与计划
cron、at、systemd timer 与开机任务
crontab 五字段语法与特殊符号热门
分 时 日 月 周 五列决定执行时机:* 任意、, 枚举、- 范围、/ 步进;日与周同时限定时是「或」关系,最容易被忽略。
crontab 命令:-e/-l/-r/-u
管理当前用户定时任务表的入口:-e 编辑、-l 列出、-r 删除(危险)、-i 交互确认、-u 操作指定用户;改前先导出备份是基本纪律。
场景:cron 任务不执行 8 步排查
从「有没有被触发」到「触发后为何失败」逐层排查:服务状态、日志、格式、权限、环境、命令路径、脚本执行位、输出重定向。
cron 定时任务体系总览
Linux 定时任务有四个入口:用户 crontab、/etc/crontab、/etc/cron.d 与 cron.{hourly,daily,weekly,monthly} 目录,另有 anacron 负责补跑错过的批任务;先搞清放哪,再谈写法。
场景:cron 报 command not found 排查
脚本手动正常、cron 执行失败,九成是 PATH 与登录环境差异;给定位步骤与三种兜底写法。
cron 环境变量:PATH/SHELL/MAILTO
cron 不读用户 profile,PATH 极简、没有 alias;在 crontab 顶部声明 PATH、MAILTO、SHELL,是任务稳定运行的第一道防线。
cron 日志位置与查看方法
任务执行痕迹在 cron 守护日志里:RHEL 看 /var/log/cron,Debian/Ubuntu 看 syslog,systemd 发行版优先 journalctl -u;先确认命令是否被触发,再谈业务结果。
flock 防任务重入
上一次没跑完、下一次又触发会造成数据错乱;用 flock 对任务加锁,-n 拿不到锁立即退出,是 cron 防叠加的标准做法。
cron 特殊字符串 @reboot/@daily
@daily、@weekly、@reboot 等快捷写法替代五字段;@reboot 在 cron 守护启动时执行一次,语义与「系统开机任务」并不完全等价。
定时任务包装脚本模板
生产级 cron 任务的推荐骨架:严格模式、锁、日志、退出码与超时;crontab 只留一行调用,团队协作与排错都轻松。
cron 输出与邮件:MAILTO 与重定向
任务的标准输出与错误默认以邮件发给任务属主;没有 MTA 时既看不到也没人管。生产习惯:全部重定向到带日期或固定路径的日志。
场景:每日数据库备份任务全套写法
一个可上线的日备任务:锁防重入、超时、退出码、留存策略、日志轮转与失败告警位,一次配好长期不慌。
/etc/crontab 系统级任务格式
系统 crontab 多一个「用户」字段插在命令之前;权限 root:root 0644,保存即生效(守护每分钟重读),不需要重启服务。
systemd timer 与 cron 如何选
两者都能定时:timer 具备依赖、日志、资源控制、补跑与错峰能力,cron 胜在简单通用;新服务优先 timer,存量脚本继续 cron 也完全合理。
/etc/cron.d 分片目录规范
软件包与配置管理工具偏爱的任务落点:每任务一个文件、格式同 /etc/crontab(含用户字段)、文件名限字母数字下划线连字符且不带点。
at 一次性定时任务
安排「一次性」在未来某时刻执行的任务,适合维护窗口、延迟重启、临时提醒;任务入队后由 atd 守护负责执行。
systemctl list-timers 查看定时器
一眼看清所有 timer 的下次触发、上次触发与关联 unit;NEXT/LAST 为空说明未启用或已过期,排查定时器第一站。
crontab 编辑纪律与注释规范
任务表就是生产配置:改前备份、写注释、单行只放一个任务;团队环境建议逻辑全部进版本化脚本,crontab 只留一行调用。
/etc/cron.{hourly,daily,weekly,monthly} 目录
把可执行脚本放进对应目录即可被 run-parts 批量调度:daily 等由 /etc/crontab 或 anacron 触发;脚本命名不能带点,且必须有可执行权限。
场景:重启/停机后补偿错过的任务
维护窗口后要回答「哪些任务该补、怎么补」:anacron 管天粒度、timer Persistent 自动补、业务型任务按业务口径人工补。
场景:把 crontab 迁移成 systemd timer
迁移五步:盘点任务、写 service、写 timer、启用验证、下线 cron 行;用真实例子把「每日 02:30 备份」完整搬过去。
定时任务日志的轮转配置
任务日志不轮转会吃满磁盘:给 /var/log/app 配 logrotate(按天+压缩+保留 N 份),并让脚本无需处理切割信号。
cron 命令中的百分号转义
在 crontab 任务行里 % 有特殊含义:未转义时被转成换行、其后内容作为命令标准输入;date 格式化必须写成 \% 或用脚本包装。
汇总查看系统全部定时任务
审计与迁移前先摸清全量任务:用户 crontab、/etc/crontab、cron.d、cron.* 目录、systemd timer 五处都要看,一条命令一把输出。
timer 补跑:Persistent=true
Persistent=true 让 OnCalendar 定时器记录最后触发点:关机期间错过的触发在开机后立即补一次,是 cron 不具备的能力。
错过的任务:cron 不补跑与应对
传统 cron 不记录「错过」:机器关机或负载爆表错过的时间点就永久丢失;需要补跑能力时靠 anacron 或 systemd timer 的 Persistent。
手动模拟 cron 执行任务
复现 cron 环境三要素:空环境(env -i)、最小 PATH、非交互 shell;用 bash -x 追踪,能重现 90% 的「手动行、cron 不行」。
场景:审计确认定时任务真实执行
合规与交接场景要证明「任务按时跑了」:时间戳文件 + journal 触发记录 + 业务产物 + 监控对账,四重证据链。
/etc/anacrontab 格式说明
anacron 的任务表:周期天数、延迟分钟、任务标识、命令四列;RANDOM_DELAY 与 START_HOURS_RANGE 控制错峰与执行时段。
cron 服务名差异与重启
RHEL 系服务名 crond(cronie 包)、Debian/Ubuntu 是 cron;systemctl 统一管,但日志、配置细节不同,脚本里要写兼容判断。
timer 相对计时:OnBootSec/OnUnitActiveSec
相对时间触发:开机后多久(OnBootSec)、上次激活后多久(OnUnitActiveSec);适合「开机后 10 分钟自检」「每 5 秒轮询」这类周期。
run-parts 批量执行目录脚本
顺序执行目录内符合命名规则的脚本:--test 只列不跑、--report 输出被跑脚本名、--reverse 反序;也是调试 cron.daily 脚本的利器。
cron 实现每月最后一天等复杂日历
cron 五字段表达不了「最后一天」「第一个工作日」:用日期判断、多行组合或交给 systemd OnCalendar 的 ~ 语义。
场景:用 at 安排维护窗口操作
临时改配置、夜里重启服务、半小时后回滚:把操作写成幂等脚本用 at 排队,避免留在 SSH 会话里「手动等到点」。
用户级定时任务:systemctl --user + linger
不占 root 的用户级 systemd:服务账号自己的 timer 与 service;日志进用户 journal,退出登录仍运行需 enable-linger。
cron 访问控制:cron.allow 与 cron.deny
控制谁能使用 crontab:allow 存在时仅名单内用户可用;只有 deny 时名单外都可用;两个都不存在则多数发行版仅 root 可用。
错峰执行:RANDOM_DELAY 与随机 sleep
几十台机器同一分钟跑同一任务会形成尖峰;anacron 用 RANDOM_DELAY、cron 用 sleep $((RANDOM%N)) 把压力摊开。
timer 精度控制:AccuracySec 与 RandomizedDelaySec
systemd 默认把 timer 对齐到 1 分钟窗口以省电(AccuracySec=1min);要准点用 AccuracySec=1s,要错峰用 RandomizedDelaySec。
flock 等待与超时模式
默认 flock 阻塞等待;-w 秒限时等待,-n 立即失败;搭配 -E 可自定义「拿不到锁」的退出码,便于监控区分跳过与失败。
任务文件本体:/var/spool/cron
用户 crontab 的真身在 spool 目录:RHEL 为 /var/spool/cron/<user>,Debian 为 /var/spool/cron/crontabs/<user>;crontab 命令只是编辑入口。
定时任务资源控制:nice/ionice
备份、索引这类重 IO 任务要和业务抢资源:nice 降 CPU、ionice 降 IO 优先级,cgroup 或 systemd unit 也可限定。
需要秒级定时的三种方案
cron 最小粒度是分钟:秒级调度用 systemd timer(OnUnitActiveSec=5s)、sleep 循环脚本,或程序内调度器(quartz等)实现。
at 常用选项:-f/-q/-m/-t
at 的实用开关:-f 从文件读命令、-q 选队列、-m 强制执行后发邮件、-t 用 [[CC]YY]MMDDhhmm 精确时间、-l/-d 列删任务。
systemd-run 临时定时任务
不想落 unit 文件时的临时定时器:systemd-run --on-calendar 创建瞬态 timer/unit,适合一次性实验与临时巡检。
anacron 命令用法
手动触发与校验 anacron:-f 忽略时间戳强制跑、-n 前台执行不 fork、-T 校验配置语法、-d 只输出不执行;排错批任务必备。
cron 时区:CRON_TZ 变量
业务跨时区时用 CRON_TZ 指定该任务表的时区(cronie 及多数现代实现支持);系统时区用 timedatectl 统一管理更稳。
at 任务输出与日志去哪了
at 任务的标准输出/错误默认邮件给任务属主(-m 即使无输出也发);系统日志里 atd 记录任务启动;排查时三项一起看。
atq / atrm 查看与删除 at 任务
atq 列出队列中的任务编号与执行时间,atrm 按编号删除;编号是任务在队列中的定位符,删除要趁早核对。
at 权限控制:at.allow 与 at.deny
与 cron 同款的名单机制:/etc/at.allow 存在时仅名单用户可提交任务;只有 at.deny 时名单外都能用;都缺省时通常仅 root。
batch 低负载时才执行的任务
batch 把任务交给 at 的批处理队列:只有系统负载低于阈值(atd 判断,通常 <1.5)才启动;适合编译、索引、大压缩这类可等待的重活。