大家好,我是悠悠!👋
前两篇带大家从Linux零基础入门一路杀到了进阶干活指令,很多小伙伴反馈:终于不怕敲黑框了,查日志、部署项目也有了底气!
但真实的线上环境,往往比想象中更刺激:磁盘突然爆满导致服务崩溃?大日志文件卡死服务器?找不到配置文件到底在哪?环境变量搞丢导致命令失踪?
这些才是中级运维和后端开发天天面临的“要命”场景!今天继续延续实操风格,推出**《Linux实战篇:生产级排错与高效技巧》**。不讲虚的,全是我和同事踩坑换来的血泪经验,看完直接拉满你的Linux生存力!建议收藏!🚀
💾 一、磁盘空间排查(服务宕机的头号杀手)
线上服务莫名挂掉、日志写不进去、MySQL启动报错……遇到这些,第一反应就是查磁盘!别傻乎乎地去重启服务,重启了照样起不来!
1. 查看整体磁盘使用率
- 重点看:
Use% 超过 80% 就要报警了!/(根目录)和 /var(日志常驻地)是重灾区。
2. 查看当前目录下各文件夹大小(揪出元凶)
- 速记:
-s 只显示总计,-h 人类可读(KB/MB/GB)。哪个文件夹数字大,就 cd 进去继续 du -sh *,层层剥茧!
⚠️超级避坑:磁盘空间释放失败有时候你用 rm -rf 删了几十G的日志,用 df -h 一看,空间根本没释放!原因:文件被正在运行的进程占用,rm 只是删了文件名,进程还在往里写,文件占用的磁盘空间直到进程关闭才会释放。解决:更安全的做法是清空文件而非删除:
> app.log # 重定向清空,大小瞬间变0,进程不断
📜 二、大文件与日志高阶查看(防卡死必看)
新手最爱用 cat 看日志,一旦日志上G,终端直接卡死,只能含泪重连!
1. 实时追踪日志尾部(看报错最爽)
- 配合
grep 食用更佳:tail -f app.log | grep "ERROR",只看报错,过滤掉烦人的Info,清爽无比!
2. 查看大文件前 20 行 / 后 20 行
head -n 20 app.logtail -n 20 app.log
3. 分页查看(安全浏览大文件)
- 实用快捷键:输入
/关键词 回车即可向下搜索,按 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% 是环境变量没配对。
- 查看当前环境变量路径。如果你装了 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. 检测端口是否连通(跨机器调试神器)
- 如果瞬间进入
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 + LCtrl + CCtrl + Z:暂停当前程序,放后台(用 fg 恢复前台,bg 丢后台运行)。
🏆 写在最后
到这里,Linux三部曲的格局已经彻底打开:
- 上篇:Linux 基础生存能力(认识系统、基础指令)
- 中篇:Linux 进阶干活能力(日志排查、服务管理、定时任务)
- 本篇:Linux 实战排错能力(磁盘救火、大文件处理、网络连通性、环境配置)
掌握这三篇,你已经超越了 80% 的初级开发者,日常上线、排雷、运维完全够用!
Linux 的精髓就是:用最简单的命令,组合出最强大的能力。多敲多练,形成肌肉记忆!
如果这期内容帮你避开了坑、提高了效率,记得点赞、关注、转发三连,你们的认可是我最大的动力!我们下期再见✨
💬互动话题你在生产环境遇到过最离谱的“删库跑路”或“磁盘爆满”事故是怎样的?最后怎么救回来的?欢迎评论区分享你的惊险故事!