linux修复
凌晨两点,我盯着屏幕上那行反复跳动的错误代码,手指悬在键盘上迟迟不敢落下。grub rescue提示符像个冰冷的判官,宣告这台跑了三年的服务器彻底罢工。数据备份是上周做的,但谁能保证万无一失?
Linux系统崩溃从来不是新闻,但每次都能让人血压飙升。最常见的是引导问题——开机直接掉进initramfs或者grub命令行。多数人第一反应是重装,可那是最笨的办法。我见过太多人抱着"重装大法好"的心态,结果丢了一堆配置文件,连数据库都跟着遭殃。
先别慌。单用户模式是你的第一道防线。开机时按住Shift或Esc调出grub菜单,在启动项上按e编辑,找到linux那一行,在末尾加上single或init=/bin/bash。这招能绕过图形界面直接进root shell,修复大部分配置错误。有一次我手贱改了fstab里一个挂载点,系统直接卡在启动界面,就是用这个方法进去把那一行注释掉,三分钟解决问题。
如果连内核都加载不了,那就得靠Live CD了。拿个U盘做个启动盘,进live环境后把系统盘挂载到/mnt,再用chroot切进去。chroot就像个时间机器,让你在系统"死"了之后还能操作它的文件系统。修复grub的命令就那么几条:grub-install /dev/sda,然后update-grub。但关键是搞清楚你的root分区在哪,盲敲命令只会越修越糟。
数据丢失是另一座大山。硬盘能识别但挂载不上,多半是文件系统损坏。fsck是救星,但得小心用——它可能把文件丢到lost+found目录里,文件名全乱套。我习惯先备份整个分区镜像再用fsck,dd if=/dev/sda1 of=/backup/sda1.img,虽然占空间,但保命要紧。
还有那些"软"故障——系统能启动,但某个服务起不来。journalctl -xe是排查利器,但输出往往又臭又长。我的土办法是看/var/log目录下最近的日志修改时间,按时间倒序找问题。有一次nginx死活起不来,最后发现是配置文件里多打了个分号,这种低级错误浪费了我整个下午。
修复Linux系统的核心思维其实就四个字:先别重装。大多数问题都能通过单用户模式、chroot、日志分析解决。那些动不动就重装的人,永远学不会系统底层的运作逻辑。我见过一个老运维,他能在纯命令行环境下用一堆小工具把系统从崩溃边缘拉回来,那才是真本事。
备份还是要做的。别等到系统崩了才后悔没做快照。哪怕只是把/etc目录打包放到别的机器上,都能让你在修复时省下大把时间。修复的过程也是学习的过程,每修好一次,你对系统的理解就深一层。
天快亮了,那台服务器终于正常启动。我盯着熟悉的登录提示符,长舒一口气。修复Linux就像做外科手术,急不得,也慌不得。每个报错信息背后都有原因,耐心找,总能解决。下次再遇到系统崩溃,记住——冷静下来,条分缕析,你会发现它远没你想的那么脆弱。