当前位置:首页>Linux>线上服务宕机先别慌!这套Linux生产级排错指南救你于水火!

线上服务宕机先别慌!这套Linux生产级排错指南救你于水火!

  • 2026-09-09 12:17:38
线上服务宕机先别慌!这套Linux生产级排错指南救你于水火!

大家好,我是悠悠!👋

前两篇带大家从Linux零基础入门一路杀到了进阶干活指令,很多小伙伴反馈:终于不怕敲黑框了,查日志、部署项目也有了底气!

但真实的线上环境,往往比想象中更刺激:磁盘突然爆满导致服务崩溃?大日志文件卡死服务器?找不到配置文件到底在哪?环境变量搞丢导致命令失踪?

这些才是中级运维和后端开发天天面临的“要命”场景!今天继续延续实操风格,推出**《Linux实战篇:生产级排错与高效技巧》**。不讲虚的,全是我和同事踩坑换来的血泪经验,看完直接拉满你的Linux生存力!建议收藏!🚀


💾 一、磁盘空间排查(服务宕机的头号杀手)

线上服务莫名挂掉、日志写不进去、MySQL启动报错……遇到这些,第一反应就是查磁盘!别傻乎乎地去重启服务,重启了照样起不来!

1. 查看整体磁盘使用率

df -h
  • 重点看:Use% 超过 80% 就要报警了!/(根目录)和 /var(日志常驻地)是重灾区。

2. 查看当前目录下各文件夹大小(揪出元凶)

du -sh *
  • 速记:-s 只显示总计,-h 人类可读(KB/MB/GB)。哪个文件夹数字大,就 cd 进去继续 du -sh *,层层剥茧!

⚠️超级避坑:磁盘空间释放失败有时候你用 rm -rf 删了几十G的日志,用 df -h 一看,空间根本没释放!原因:文件被正在运行的进程占用,rm 只是删了文件名,进程还在往里写,文件占用的磁盘空间直到进程关闭才会释放。解决:更安全的做法是清空文件而非删除:

> app.log  # 重定向清空,大小瞬间变0,进程不断

📜 二、大文件与日志高阶查看(防卡死必看)

新手最爱用 cat 看日志,一旦日志上G,终端直接卡死,只能含泪重连!

1. 实时追踪日志尾部(看报错最爽)

tail -f app.log
  • 配合 grep 食用更佳:tail -f app.log | grep "ERROR",只看报错,过滤掉烦人的Info,清爽无比!

2. 查看大文件前 20 行 / 后 20 行

head -n 20 app.logtail -n 20 app.log

3. 分页查看(安全浏览大文件)

less app.log
  • 实用快捷键:输入 /关键词 回车即可向下搜索,按 N 跳到下一个,按 q 退出。比 more 强大得多,看源码神器!

🔎 三、全局搜索与精准定位(找东西神器)

配置文件不知道放哪了?只记得代码里某个报错词?全靠 find 和 locate!

1. 按名字精准查找文件

find / -name ”nginx.conf”
  • 意思是:从根目录开始,找名字叫 nginx.conf 的文件。如果嫌慢,可以限定目录:find /etc -name "*.conf"。

2. 按文件大小查找(清理磁盘神技)

# 查找 /var/log 下大于 100M 的文件find /var/log -size +100M
  • 找出来直接删,磁盘瞬间瘦身!

3. 更快的查找

updatedb  # 先更新数据库(耗时几秒)locate nginx.conf  # 秒出结果
  • locate
     比 find 快得多,因为它走索引,但缺点是刚新建的文件可能搜不到,需要先跑 updatedb。

🌍 四、环境变量与别名(让命令为你所用)

1. 为什么有些命令找不到?报错 command not found,99% 是环境变量没配对。

echo $PATH
  • 查看当前环境变量路径。如果你装了 Java 但没把 /usr/local/java/bin 加到 PATH 里,系统就找不到 java 命令。

2. 永久生效环境变量修改 ~/.bashrc(当前用户)或 /etc/profile(全局):

export JAVA_HOME=/usr/local/javaexport PATH=$JAVA_HOME/bin:$PATH
  • 别忘了:修改后运行 source ~/.bashrc 让配置立即生效!

3. 设置别名(懒人必备)每次敲 tail -f /var/log/nginx/access.log 太长?设个别名:

alias tlog='tail -f /var/log/nginx/access.log'
  • 以后直接敲 tlog 就行!同样,把别名写进 ~/.bashrc 才能永久生效。

🚀 五、进阶网络排错(接口不通必查)

除了 ping 和 curl,后端联调时更常遇到端口不通、防火墙拦截的问题。

1. 查看本机监听的端口(确认服务到底起没起)

netstat -tulpn | grep 8080# 或者用更现代的 ssss -tulpn | grep 8080
  • 如果看不到你的端口,说明服务根本没启动成功,回去查日志!

2. 检测端口是否连通(跨机器调试神器)

telnet 192.168.1.10 3306
  • 如果瞬间进入 Escape character is '^]'. 说明端口通;如果卡住或 Connection refused,说明网络不通或对面服务没跑。

3. 查看防火墙状态

# CentOS 7+firewall-cmd --state# Ubuntuufw status
  • 端口本机通了,但外面访问不到?查查是不是防火墙把端口挡住了!

🛠️ 六、软连接(Linux的快捷方式)

装软件、版本切换,离不开软连接(类似Windows的快捷方式)。

# 创建软连接ln -s /usr/local/java-11 /usr/local/java# 删除软连接(注意:后面千万不要加 /)unlink /usr/local/java# 或者 rm /usr/local/java
  • 这样你配置环境变量只要指向 /usr/local/java,以后升级 Java 17,只需把软连接重新指向 java-17,其他配置一行不用改!

⚠️避坑:删除软连接时,rm /usr/local/java/ 带了斜杠,可能会把真实目录里的文件全删了,千万别加斜杠!


🧠 七、历史命令与快捷键(效率翻倍)

天天敲长命令,手都敲麻了,这些操作让你快如闪电:

  • history | grep "curl"
    :从历史记录里找曾经敲过的复杂命令。
  • Ctrl + R
    :超级好用! 按下后输入命令的几个字母,自动补全你历史中最近敲过的那条,回车直接执行。
  • Ctrl + L
    :清屏(等于输入 clear)。
  • Ctrl + C
    :强制终止当前运行的程序(卡住时必按)。
  • Ctrl + Z
    :暂停当前程序,放后台(用 fg 恢复前台,bg 丢后台运行)。

🏆 写在最后

到这里,Linux三部曲的格局已经彻底打开:

  • 上篇:Linux 基础生存能力(认识系统、基础指令)
  • 中篇:Linux 进阶干活能力(日志排查、服务管理、定时任务)
  • 本篇:Linux 实战排错能力(磁盘救火、大文件处理、网络连通性、环境配置)

掌握这三篇,你已经超越了 80% 的初级开发者,日常上线、排雷、运维完全够用!

Linux 的精髓就是:用最简单的命令,组合出最强大的能力。多敲多练,形成肌肉记忆!

如果这期内容帮你避开了坑、提高了效率,记得点赞、关注、转发三连,你们的认可是我最大的动力!我们下期再见✨

💬互动话题你在生产环境遇到过最离谱的“删库跑路”或“磁盘爆满”事故是怎样的?最后怎么救回来的?欢迎评论区分享你的惊险故事!

最新文章

随机文章