2023年那个雨夜,我差点被炒鱿鱼
哎,跟你们说个事啊,现在是2026年2月26号,下午四点半。我正坐在办公室最角落的工位上,面前的咖啡早凉了,键盘上还沾着早上吃包子掉的芝麻。窗外太阳斜斜地照进来,把桌角那盆仙人球的影子拉得老长,可我突然就想起三年前那个雨夜,现在想想都后背发凉。
那时候我刚入职三个月,就是个啥都不懂的运维实习生。工位就在厕所旁边,每天都能闻到若有若无的消毒水味,夏天还能听到冲水的声音,那叫一个酸爽。那天周五,我提前把服务器补丁打完,不到六点就溜了——说实在的,就是想早点回家看《三体》第二部,那本书我都看三遍了,每次看到水滴摧毁人类舰队那段,还是热血沸腾,感觉自己都跟着激动得发抖。
结果刚把外卖打开,是我最爱的黄焖鸡米饭,还没来得及扒第一口,手机突然跟抽风似的震动起来。拿起来一看,我当场就慌了——监控告警短信一条接一条,全是"生产环境磁盘空间使用率92%!"的红色大字,每一条都带着刺耳的提示音,震得我手都麻了。
手忙脚乱打开笔记本,远程连服务器。看着黑屏幕上闪烁的光标,我手心全是汗——实不相瞒,我当时就只会俩命令:ls和cd。别的?完全没听说过。我甚至不知道df是干嘛的,还以为是"delete file"的缩写呢,结果输入半天没反应,急得我直拍桌子,把外卖盒都震翻了,黄焖鸡米饭洒了一桌子。
试着输"df",结果给我来个"command not found"——后来才知道,我特么连路径都没配对,得用绝对路径。又试"du",满屏幕数字看得我眼晕,根本不知道哪个是哪个。手忙脚乱在Google上搜"Linux怎么查看磁盘空间",一条一条试命令,瞎猫碰死耗子似的鼓捣了俩多小时,总算找到罪魁祸首——一个Tomcat的日志文件,100多个G!我当时都惊呆了,这么大的文件,之前咋就没发现呢?
那天凌晨三点,我盯着恢复正常的监控曲线,眼泪差点掉下来。不是因为解决了问题,是觉得自己太没用了——这点小事都搞了俩多小时,要是被领导知道,肯定得炒我鱿鱼。坐在电脑前,盯着屏幕上的命令行,突然想起面试时面试官问我"你熟悉Linux命令吗",我还拍着胸脯说"熟悉",现在想想真是脸都红到脖子根了,恨不得找个地缝钻进去。
从那天起,我跟着了魔似的学Linux命令。每天下班回家,抱着《Linux命令行大全》啃到凌晨一两点,眼睛都熬红了。周末还去参加各种技术分享会,有时候为了听个讲座,要坐俩小时地铁,挤得跟沙丁鱼似的。我甚至把常用命令写便利贴上,贴满整个电脑屏幕,上厕所都在背。有次在地铁上,我一边背一边念叨"ls -la, cd ~, df -h...",旁边阿姨以为我是搞编程的,一个劲夸"现在的年轻人真努力",搞得我都不好意思了。
就这么坚持了半年,我终于从被同事笑话的"命令小白",变成团队里能独当一面的运维工程师。有次团队聚餐,主管还专门敬我一杯,说"上次那个磁盘问题,要不是你熬通宵,我们可能要损失不少用户"——我当时心里那个美啊,差点把酒杯摔了,赶紧喝一大口,结果呛得直咳嗽,惹得大家都笑了。
现在我咋用命令?
跟你们说,我现在每天到公司第一件事,就是打开终端,敲这几个自己整的alias:
alias cpu='top -b -n 1 | head -20'
alias mem='free -h && ps aux --sort=-%mem | head -10'
alias disk='df -h && du -sh /* 2>/dev/null | sort -hr'
这仨alias是我花一晚上研究出来的,一行命令下去,CPU、内存、磁盘使用情况全知道了。跟你们说,这几个命令救过我好多次——有次早上刚到公司,还没来得及泡咖啡,敲了个disk,发现磁盘使用率已经85%了,赶紧排查,结果是前一天晚上备份脚本没清理临时文件,要是等到下午高峰期,肯定出问题。我当时一边清理一边想,幸亏有这好习惯,不然又要被主管骂了。
常用命令心得
ls:我最常用的命令,没有之一。现在敲ls -la都不用过脑子,条件反射似的。有次在电梯里遇到CEO,他突然问我"小李,你每天都在电脑上敲些啥啊?",我顺口就说"ls -la",他还点点头说"嗯,看起来挺专业"——我当时差点没忍住笑出来,心说这算啥专业啊,就是个基础命令而已。
cd:cd -一键切换目录,这功能真是救了我大忙。我经常在配置文件和日志目录之间来回跑,以前每次都要重新输路径,麻烦死了。现在用cd -,一键就能回去,省老多时间了。有次跟产品经理开会,突然收到告警,我当场打开终端,用cd -切换到日志目录,三两下就定位了问题——是个小bug,改一行代码就好了。产品经理当场对我刮目相看,说"没想到你这么厉害",我心里那个得意啊,表面上还装得很淡定。
rm:我现在还怕的命令,简直是我的噩梦。有次想清理/tmp目录,脑子一抽执行了rm -rf /tmp/*,结果把正在跑的应用临时文件全删了。第二天被主管叫去办公室"喝茶",他倒了杯茶给我,然后就坐在那不说话,吓得我冷汗直冒,手都抖了,茶都洒了一点在桌子上。从那以后,我删东西前必用ls确认三遍,现在甚至养成习惯,删东西前先把命令复制到记事本里,确认无误了再执行,就怕再犯同样的错。
top:去年双十一,我们电商网站突然卡成PPT。我当时正在吃午饭,手里还拿着半盒宫保鸡丁,看到告警短信直接就把饭盒扔桌子上了,饭粒都洒了一地。用top一看,CPU直接干到98%!按P排序,一个node进程占了90%。一查是数据同步脚本死循环了,我上去就是kill -9,网站瞬间就活过来了。后来老板还专门在群里表扬我,说我"反应迅速,处理得当"——那盒宫保鸡丁凉了,但是我心里热乎着呢,感觉自己像个英雄似的。
grep和tail:排查问题的神器,我现在根本离不开它们。tail -f实时看日志,grep搜索关键词,问题瞬间定位。有次用户反馈登录不了,我用tail -f /var/log/nginx/access.log | grep 401,直接就找到了问题——用户输错密码,连续输了5次,被系统锁定了。要不是grep,我可能要翻半天日志,眼睛都要看瞎了。
我踩过的坑,你们可别再踩
1. 权限设置太松
有次为了方便,我把配置文件权限设为777,结果没两天服务器就中了挖矿病毒。当时看到CPU使用率突然飙升到100%,还以为是业务量增长了,结果用top一看,全是叫什么"xmrig"的进程——我当时都蒙了,完全不知道这是啥,还以为是公司新上的什么服务呢。后来请了安全专家来处理,折腾了整整两天,服务器才恢复正常。专家跟我说,777权限相当于把服务器的门打开,谁都能进来,我当时恨不得找个地缝钻进去。从那以后,我再也不敢用777了,都是用644或755,每次设置权限前都要默念一遍"最小权限原则",跟念经似的。
2. 不看man手册
刚开始学Linux时,我总凭感觉敲命令,结果经常出错。有次想查看进程,就凭记忆敲了个ps aux | grep java,结果出来一堆进程,我也不知道哪个是哪个,急得直挠头。后来同事跟我说,你应该查man手册啊,man ps一看,原来还有-o参数可以指定输出字段,瞬间就清楚多了。现在我遇到不确定的命令,第一反应就是man 命令,虽然有时候英文看得头疼,单词都不认识几个,但是咬着牙也要看,总比出错强。
3. 随便用kill -9
有次看到一个进程占用CPU高,直接kill -9干掉,结果导致应用数据损坏。当时是电商系统的支付服务,用户正在付款呢,我咔嚓一下把进程杀了,结果有好几个用户的订单状态异常,客服电话都被打爆了。主管把我叫到办公室,把订单截图往桌子上一摔,说"你看看你干的好事",我当时脸都白了,一句话都不敢说。后来才知道,应该先尝试kill(默认信号),让进程优雅退出,不行再用kill -9。现在我杀进程前,都会先看一下进程名,确认不是关键服务才动手,跟拆炸弹似的,小心翼翼的。
4. 磁盘满了才清理
之前我都是等磁盘快满了才清理,结果有次清理不及时导致服务宕机。那是个周六,我正在家里睡懒觉,突然被电话吵醒,说是网站打不开了。我迷迷糊糊接起电话,听到同事着急的声音,瞬间就清醒了。远程连接一看,磁盘100%了,所有服务都启动不了。赶紧用du命令排查,发现是日志文件太大了,清理完重启服务,前后花了俩多小时。我当时一边清理一边想,要是平时能定期检查就好了,也不用大周末的被从床上叫起来。现在我每天用disk命令检查,定期清理日志和临时文件,再也没出现过这种情况。
写给刚入行的兄弟姐妹们
前几天群里有个刚入行的小兄弟问我:"哥,Linux命令这么多,我记不住咋办?"
我跟他说:"别慌,先掌握最常用的20个命令,用多了自然就记住了。我当年也是从ls、cd开始的,现在常用命令闭着眼都能敲出来。你知道不?我刚开始学的时候,连ls -la和ls -al都分不清楚,还以为是俩不同的命令,后来才知道参数顺序不重要,闹了个大笑话。"
还有人问:"遇到问题咋办?"
我告诉他:"三步走:1. 用top/df/ps定位问题 2. 用grep/tail分析日志 3. 用man查命令用法。多练几次,你也能成高手。跟你说,我现在排查问题,基本上看一眼命令输出就知道问题出在哪了,这都是练出来的。刚开始的时候,我也经常手忙脚乱,现在好多了。"
前阵子还有个小妹妹问我:"姐姐,我是学文科的,转行进运维,总觉得自己学不会,咋办?"
我跟她说:"我当年也是文科生啊!我大学学的是汉语言文学,毕业后找不到工作,才转行做运维的。刚开始我连命令是啥都不知道,看到黑屏幕就害怕,现在不也做得好好的?只要肯花时间,没什么学不会的。我相信你肯定比我强,加油!"
写在最后
其实我从来没想过自己会写技术文章。我就是个普通的运维工程师,平时说话直来直去,写东西也没什么文采。我甚至连微信朋友圈都很少发,更别说写这么长的文章了。要不是因为前几天发生的事,我可能永远不会写这些。
前几天,我看到一个刚入行的实习生因为不会用命令急得哭,我就想起了三年前的自己。那时候要是有人能跟我分享这些经验,我肯定能少走很多弯路。我记得当时我为了学一个命令,在电脑前坐了整整一天,试了无数次才搞明白,眼睛都看酸了。
所以我决定把这些年的经验、踩过的坑都写出来,希望能帮到刚入行的兄弟姐妹们。我知道这篇文章可能写得有点啰嗦,也没什么华丽的辞藻,但都是我自己的真实经历,希望能给你们一些启发。
如果你觉得这篇文章对你有帮助,点个赞、转个发,就是对我最大的支持了。如果有什么问题,随时在评论区留言,我会一一回复——虽然我平时工作挺忙的,但看到消息肯定会回的,哪怕是半夜两点。
最后,送你们一句话——这是我师父在我刚入行时跟我说的:"命令行是运维工程师的武器,你越熟练,它就越听话。"我现在对这句话的理解越来越深了,希望你们也能早点体会到。
加油,我相信你们都能成为优秀的运维工程师!等你们成为高手了,别忘了回来分享经验给新人哦!我等着看你们的成长故事。
关注我,不迷路!