linux Roadmap
Linux 排障专题
Linux 排障专题:把 systemd 服务管理、磁盘和内存告警、CPU load、端口占用、SSH 免密登录、journalctl 日志和文件权限等服务器现场问题串成一条从资源到配置的完整排障路径。
服务器出问题先按资源、进程、端口、日志、权限五步顺序采集证据,避免上来就 restart 服务或改配置,把小故障做成大事故;确认根因后再决定是否修改持久化配置与准备回滚方案。
Troubleshooting Path
推荐排障路线图
- 01
先看资源是否打满
用 df、free、top、uptime 判断磁盘、内存、CPU 和 load,避免先改服务配置。
- 02
再定位进程和端口
用 ps、ss、lsof 找到监听端口、占用进程和异常父子进程关系。
- 03
继续读 systemd 与应用日志
用 systemctl status 和 journalctl 锁定启动失败、权限错误和退出码。
- 04
最后处理权限与持久化配置
确认用户、目录权限、LimitNOFILE、开机启动和回滚方案。
Before You Change
执行前检查
- 先复制只读诊断命令
- 涉及 systemctl restart 前确认影响范围
- 清理磁盘前确认文件归属和备份
- 修改 /etc 配置后记录回滚命令
Start Here
优先阅读
crontab 定时任务不执行的常见原因
crontab 定时任务到点不执行时,先看 /var/log/cron 或 syslog 确认任务是否触发,再确认 crond 服务状态、命令绝对路径、cron 最小 PATH 环境变量、脚本执行权限和 SHELL 差异等常见根因。
排障hosts 文件修改不生效排查
修改 /etc/hosts 或 Windows hosts 文件后域名解析未生效时,用 getent hosts 或 ping 验证系统是否读取,Linux 重启 nscd/systemd-resolved、Windows 执行 ipconfig /flushdns 刷新缓存,浏览器可能启用 DoH 绕过 hosts 需要单独关闭。
排障Linux 查看 TCP 连接数与状态
Linux 服务器需要统计 TCP 连接总数、状态分布或排查 TIME_WAIT/CLOSE_WAIT 堆积时,用 ss -s 看总览,ss -tan 按状态分组统计,netstat 和 /proc/net/tcp 交叉验证,ss 从 netlink 读取比 netstat 更快也更全。
排障Node.js EADDRINUSE 端口被占用排查
Node.js 启动服务报 Error: listen EADDRINUSE: address already in use :::3000 时,用 lsof -iTCP:3000 -sTCP:LISTEN 或 ss -lntp 找到占用进程 PID,判断是自己的僵尸进程还是其他服务,再决定 kill 释放端口还是通过 PORT 环境变量换端口。
Tools
相关工具
systemd 服务文件生成器
可视化生成 Linux systemd service 单元文件,支持 ExecStart、User、Restart、Environment、After 等常用指令,同时输出 systemctl 启停、enable 自启和 journalctl 查看日志的完整命令片段。
工具Linux 端口占用排查助手
输入端口号一键生成 ss、lsof、fuser、netstat、journalctl 等排查命令,快速定位监听进程、占用连接和 systemd 服务状态,服务器端口冲突和 address already in use 排障必备。
工具Cron 表达式解析器
在线解析 Cron 表达式,将 cron 五段式(分 时 日 月 周)翻译为人类可读的中文描述,标注下次执行时间、常见特殊符号(*/L#)和常见示例,支持秒级(六段式)和标准五段式两种格式,浏览器本地计算不上传数据,适合排查 crontab 定时任务配置错误。
Cheatsheets
相关速查表
Linux 排障命令速查表
Linux 服务器排障命令一页速查:top/ps 进程负载、ss/lsof 端口连接、df/du/free 磁盘内存、journalctl/dmesg 日志与 OOM 定位,服务器现场按现象选组快速采集证据。
速查Vim 常用操作速查表
Vim 常用操作一页速查:hjkl/gg/G/w/b 光标移动、i/o/dd/yy/p/u 编辑与撤销、/word 和 :%s/old/new/g 查找替换、v/V/Ctrl-v 可视模式、:wq/:q!/:w !sudo tee % 保存退出,服务器改配置卡壳时直接查。
速查SSH 连接与配置速查表
SSH 连接与配置一页速查:ssh -i/-p/-vvv 登录调试、ssh-keygen 与 ssh-copy-id 密钥管理、~/.ssh/config 别名与 ProxyJump 跳板、-L/-R/-D 端口转发与 SOCKS 代理,免密登录和开隧道直接对照。
速查systemd 服务管理速查表
systemd 服务管理一页速查:systemctl start/stop/reload/enable 启停自启、status/is-active/list-units 状态查看、journalctl -u/-f/-p err/--since 日志过滤,以及 timer 定时任务替代 crontab 的用法。
速查Cron 表达式速查表
Cron 表达式一页速查:分/时/日/月/周 5 段格式说明、每 5 分钟与工作日等常用示例、*/N 与 A-B/A,B,C 特殊符号、@reboot/@daily/@hourly 时间宏,以及 PATH 与输出重定向等踩坑要点。
速查tmux 终端复用速查表
tmux 常用操作一页速查:会话管理、窗口和窗格操作、复制模式、自定义配置和常见排障场景,覆盖远程开发保持会话不丢失等高频需求。
速查sed / awk / grep 文本处理速查表
Linux 文本三剑客 sed、awk、grep 常用命令一页速查:正则匹配、替换、提取列、统计和批量处理等 30+ 高频操作,含关键参数说明与典型排障场景示例。
Latest Updates
最近更新
All Runbooks
全部相关内容
crontab 定时任务不执行的常见原因
crontab 定时任务到点不执行时,先看 /var/log/cron 或 syslog 确认任务是否触发,再确认 crond 服务状态、命令绝对路径、cron 最小 PATH 环境变量、脚本执行权限和 SHELL 差异等常见根因。
排障hosts 文件修改不生效排查
修改 /etc/hosts 或 Windows hosts 文件后域名解析未生效时,用 getent hosts 或 ping 验证系统是否读取,Linux 重启 nscd/systemd-resolved、Windows 执行 ipconfig /flushdns 刷新缓存,浏览器可能启用 DoH 绕过 hosts 需要单独关闭。
排障Linux CPU 和 Load Average 过高排查流程
Linux 机器出现 load average 高、top us/sy/wa 异常时,先区分 CPU 使用率高还是 Load 高——CPU 高用 top -H 和 pidstat 找线程,Load 高 CPU 却低就查 iowait、D 状态进程和 steal time,避免盲目重启掩盖真实瓶颈。
排障Linux 磁盘占满排查与安全清理
Linux 报 No space left on device 或磁盘占满时,用 df -hT 定位具体挂载点,du --max-depth 逐层找大目录,journalctl --disk-usage 和 docker system df 排查日志/镜像占用,lsof +L1 找已删除但仍被进程持有的文件释放空间。
排障Linux OOM Killer 与内存不足排查
Linux 进程被 OOM Killer 杀、容器状态 OOMKilled 或 dmesg 出现 Out of memory: Killed process 时,用 dmesg -T 与 journalctl -k 查历史内核日志确认时间和被杀进程,区分宿主机 OOM 与容器 cgroup 限制,再看进程 RSS 增长趋势排查泄漏。
排障Linux 查看 TCP 连接数与状态
Linux 服务器需要统计 TCP 连接总数、状态分布或排查 TIME_WAIT/CLOSE_WAIT 堆积时,用 ss -s 看总览,ss -tan 按状态分组统计,netstat 和 /proc/net/tcp 交叉验证,ss 从 netlink 读取比 netstat 更快也更全。
排障Node.js EADDRINUSE 端口被占用排查
Node.js 启动服务报 Error: listen EADDRINUSE: address already in use :::3000 时,用 lsof -iTCP:3000 -sTCP:LISTEN 或 ss -lntp 找到占用进程 PID,判断是自己的僵尸进程还是其他服务,再决定 kill 释放端口还是通过 PORT 环境变量换端口。
排障SSH Permission denied (publickey) 排查流程
ssh 或 git 拉代码报 Permission denied (publickey) 时,先用 ssh -vvv 看客户端提交了哪把 key 和服务端 Authentications that can continue,再核对 authorized_keys 内容、~/.ssh 目录 700 与 authorized_keys 600 权限,云服务器还要检查 sshd_config 和安全组。
排障systemd 服务启动失败排查流程
systemctl 启动服务后 status 显示 failed、exit-code 或 status=203/EXEC 时,用 journalctl -u <service> -n 200 读取完整错误,检查 ExecStart 是否绝对路径、WorkingDirectory 是否存在且服务用户有权限,改 unit 后必须 daemon-reload。
排障systemd timer 定时任务不执行排查
systemd timer 到点不触发或触发了但任务没跑时,用 systemctl list-timers --all 查看 NEXT/LAST,确认 timer 是否 enable 且 active,systemd-analyze calendar 校验 OnCalendar 表达式与时区,再用 journalctl -u <service> 看同名 service 的实际执行日志和退出码。
排障Too many open files 文件句柄耗尽排查
应用日志出现 Too many open files (EMFILE) 时,用 cat /proc/<pid>/limits 看 Max open files,ls /proc/<pid>/fd | wc -l 统计已打开数,lsof -p 按 socket/日志/deleted 文件分类找泄漏点,systemd 服务需要在 unit 里设 LimitNOFILE 并 daemon-reload。
命令chmod 文件权限命令
使用 chmod 修改 Linux 文件权限的常用命令,数字模式 755 等于 rwxr-xr-x,字母模式 u+x/g-w 按用户/组/其他加减权限,chmod -R 递归修改目录,chmod --reference 复制参考文件权限,目录必须有 x 权限才能进入。
命令crontab 定时任务命令
crontab 定时任务日常管理命令,crontab -e 编辑当前用户任务、-l 查看列表、-r 删除全部,crontab -u 管理指定用户任务,配合 cron 表达式「分 时 日 月 周 命令」和 @reboot/@daily 别名,systemctl status crond 检查服务状态。
命令find 查找文件命令
Linux find 查找文件的常用命令,find -name/-type 按名称和类型过滤、-size +100M 查大文件、-mtime -7 按修改时间查最近变更、-maxdepth 限制递归深度、-exec 或 xargs 对结果批量执行命令。
命令Git 配置和取消代理命令
Git 配置和取消 HTTP/HTTPS/SOCKS5 代理的常用命令,git config --show-origin --get-regexp proxy 找出代理配置来自 system/global/local 哪一级,http.proxy 只影响 HTTP 仓库,SSH 仓库需要单独配置 ssh ProxyCommand 或 IdentityFile。
命令journalctl 查看服务日志命令
journalctl 查看 systemd 服务日志的常用命令,journalctl -u <service> -n 200 --no-pager 看近期错误,-f 实时跟踪,--since/--until 按时间窗过滤,-p warning..alert 按优先级过滤,--disk-usage 查看日志占用与 vacuum 清理。
命令Linux 查看端口占用命令
Linux 查看端口占用与监听进程的常用命令,ss -lntp 快速列出所有 TCP 监听端口和 PID/进程名,lsof -iTCP:8080 -sTCP:LISTEN 定位具体进程,fuser 也可查端口,新系统优先用 ss 替代 netstat。
命令Linux 查看磁盘空间和大文件命令
Linux 排查磁盘空间占用的常用命令,df -hT 定位满的挂载点,du --max-depth=1 | sort -h 逐层缩小大目录,find -size +500M 找单个大文件,du 与 df 不一致时用 lsof +L1 查已删除但仍被进程持有的文件。
命令lsof 查看文件句柄和端口命令
lsof 查看文件句柄、端口和网络连接占用的常用命令,lsof -iTCP:8080 -sTCP:LISTEN 找端口监听进程、lsof -p <pid> 查进程打开的所有文件、+D 递归扫描目录、+L1 找已删除但仍被打开的文件,配合 /proc/<pid>/limits 判断 nofile 限制。
命令ps 查看进程和资源占用命令
Linux ps 查看进程静态快照的常用命令,ps aux --sort=-%cpu/-%mem 按 CPU 或内存排序找可疑进程,ps -ef | grep 按名称过滤,ps -o pid,ppid,stat,etime,cmd 查父子进程和状态,pstree -ap 展示进程树,动态观测配合 top/pidstat。
命令sed 文本替换命令
Linux sed 文本替换的常用命令,sed 's/old/new/g' 全局替换(先不加 -i 预览),sed -i 原地修改文件、-i.bak 自动备份,sed -n '10,20p' 按行号预览,sed '/^#/d' 删除匹配行,批量改配置前务必先预览。
命令SSH 生成密钥和分发公钥命令
SSH 生成密钥与分发公钥的常用命令,ssh-keygen -t ed25519 生成推荐算法密钥,ssh-copy-id 一键分发公钥到 authorized_keys,配合 ~/.ssh 700、authorized_keys 600 权限,多账号在 ~/.ssh/config 里用 Host + IdentityFile 区分。
命令systemctl 管理服务常用命令
systemctl 管理 Linux systemd 服务的常用命令,systemctl status 查看服务状态与最近错误、start/stop/restart 控制服务、enable --now 一键开机自启并启动、reload 平滑加载配置,失败时立即 journalctl -u <service> 看详细日志。
命令systemd timer 定时任务常用命令
systemd timer 定时任务的常用管理命令,systemctl list-timers --all 看所有 timer 的 LAST/NEXT,systemctl status backup.timer/backup.service 分别查触发器与业务日志,systemd-analyze calendar 校验 OnCalendar 表达式,systemctl start 手动触发复现。
命令tar 压缩解压常用命令
Linux tar 打包压缩解压的常用命令,tar -czf 用 gzip 压缩、--zstd 用 zstd 平衡速度与压缩率,解压前先 tar -tf 查看包内路径避免污染当前目录,-C 指定解压目录,--numeric-owner 迁移系统文件时保留 UID/GID。
命令tcpdump 抓包命令
Linux tcpdump 抓包排查网络问题的常用命令,tcpdump -i eth0 -nn 不解析主机名和端口名减少延迟,port 80/host 过滤按端口或 IP 抓包,-w capture.pcap 保存文件后用 Wireshark 分析,权限不够用 sudo 或 setcap cap_net_raw。