老男孩的跟老Linux课程里,最让我醍醐灌顶的男孩不是那些炫酷的命令,而是学l系统他反复敲打的一句话:“运维的本质,是核心处理故障和预防故障。” 这话听起来朴素,笔记但真做起来,跟老完全是男孩另一码事。
我记性最深的学l系统是他讲系统启动流程那一课。别人讲启动,核心就念念有词地背“BIOS→MBR→GRUB→Kernel→systemd”,笔记背完就散。跟老老男孩不这么干。男孩他直接扔出一个故障场景:某天服务器开机后卡在黑屏,学l系统光标闪烁,核心连个报错都不给。笔记然后他带着我们从头排查,从BIOS里硬盘认没认到,到GRUB配置文件是不是被手滑改坏了,再到内核参数里有没有奇怪的“quiet”把日志吞了。那节课的实际收获是,我后来真的遇到一次服务器起不来,凭着对那套流程的肌肉记忆,十分钟定位到是GRUB的引导分区被误写了。知识不在脑子里,得长在手上。
说到系统核心,绕不开的就是进程和内存管理。老男孩讲进程状态时,用了特别土的比喻——把进程比作等公交的人。运行中的是正在上车的人,睡眠的是坐那儿玩手机的,僵尸进程就是那种车都开走了还赖在站台上不走的,占着坑位,看着闹心。这个比喻糙,但管用。以前我记不住“TASK_UNINTERRUPTIBLE”和“TASK_INTERRUPTIBLE”的区别,现在一想等公交玩手机但不敢走远的样子,立马就通了。他还特意强调,查内存别光看free命令那点输出,要看/proc下的真实情况。有一次线上服务内存飙升,我按他教的,去/proc里翻每个进程的smaps文件,愣是找出一个Java进程里加载了海量重复的Native库,问题根源就这么挖出来的。
磁盘和文件系统那块,他讲inode讲得特别细。他说,你们总以为文件满了就是磁盘满了,其实inode耗尽比磁盘满更阴险。磁盘还剩几个G,但新建文件就是报“No space left on device”,这种坑,不踩一次不长记性。老男孩给的方法很直接:用df -i看inode使用率,再用find / -xdev -type f | wc -l去数文件数量,定位到底是哪个目录下的小文件爆炸了。这招我在一次备份服务器上用过,发现/tmp下面有几十万个session临时文件,全是某个定时任务没清理干净留下的。那一次,我算是真正体会到“系统核心”四个字的分量——它不光是内核参数,更是你对每个底层机制的理解深度。
老男孩还喜欢讲日志,他说日志是运维的“黑匣子”,平时没人看,出事就是救命稻草。他教我们配置rsyslog时,特意把“日志切割”拎出来讲。他说,你日志不切割,早晚有一天磁盘会被撑爆,而且系统会变得奇慢无比。他给了一个logrotate的配置范例,里面每行注释都写得清清楚楚,连“delaycompress”这种选项都解释得明明白白——就是为了让上次切割的日志还能被服务继续写一会儿,避免丢日志。后来我管理的一台Nginx服务器,访问日志从几百兆疯长到几个G,我用他教的logrotate规则一配,磁盘空间稳如老狗。
说到底,跟老男孩学Linux,学的不只是命令,而是那种“知其然更知其所以然”的较真劲儿。他常挂在嘴边的一句话是:“系统不会骗你,骗你的是你自己的猜测。” 每次遇到问题,先别急着重启,先去看状态,看日志,看指标。这套方法论,比任何工具都值钱。
现在我自己带新人,也把启动流程、inode、日志切割这些当重点讲。看着他们一开始听得云里雾里,后来在故障现场眼睛一亮的样子,我就想起当年那个对着黑屏服务器手忙脚乱的自己。Linux运维这条路,核心系统知识就是地基,地基不牢,盖再高的楼也是危房。
顶: 26349踩: 45674






评论专区