Linux给了你几乎全部的控制权,也几乎从不拦你。你敲一条命令,回车,它就当你是认真的。这份信任是Linux的力量所在,也是为什么一套本来稳定的系统,会一点点变成烂摊子。

打开网易新闻 查看精彩图片

它很少一夜之间坏掉。真正拖垮系统的,是那些你从没怀疑过的小习惯,重复了一次又一次。下面这几件事,值得逐条对照。

一失败就加sudo

sudo让命令以更高权限运行,很多管理任务确实离不开它。但一条命令报错就条件反射地补上sudo,或者教程里写了就照做,却不清楚为什么,小失误就会被放大成系统崩溃。

时间一长,加sudo成了肌肉记忆。它能跑通,习惯就留下了。麻烦在于,root拥有的文件会开始出现在你的家目录里。以sudo运行的应用会生成配置文件和缓存,之后你的普通账户改不动它们,于是冒出一堆莫名其妙的权限错误。

更严重的是,带提权的命令能改动受保护的配置文件、删掉系统组件、改变所有权和权限。同样的手误,普通用户身份下可能只影响几个个人文件,加上sudo后果就大得多。

养成习惯:除非确实需要管理权限,否则用普通用户跑命令。命令失败时,先读错误再决定要不要加sudo。有时候问题根本不是权限,提权也修不好。另外,避开sudo pip install和sudo npm -g这类命令,免得把包冲突装进系统全局。

不知道为什么就改权限

文件打不开、脚本跑不起来,改权限看起来是最省事的解法。问题出在你不知道缺的是哪一项权限,干脆给所有人完全访问。

看到Permission denied就上chmod 777?一切突然都能跑了,感觉像解决了问题,实际上你只是把门上的锁拆了。777意味着系统上每个用户和进程都能读、写、执行这个文件。要是配上-R递归用错了目录,SSH、sudo以及那些在文件权限过宽时拒绝启动的服务,都可能被你搞坏。权限存在是有理由的。

更好的做法是先读错误,再用ls -l看清文件归谁所有、当前权限是什么,只改需要改的那部分。脚本只是需要运行,就用chmod u+x只给你的账户加执行权限。文件归属错了,正确的工具是chown。

无视错误信息

很多人看到错误信息觉得吓人,直接滚过去。有人会重跑同一条失败的命令,加个force参数,或者干脆不管。但错误不会因为你无视它就消失,它在那儿等着。

损坏的依赖、被hold住的包、写满的磁盘、失败的服务,都会安静地堆积。等到一次例行更新,全线崩掉,留给你一个追不到源头的错误。

先读最后几行,真正的原因通常在那里。查服务用systemctl status,查本次启动以来的错误用journalctl -p err -b。拿准确的错误文本去搜,在继续之前把依赖和磁盘问题解决掉。大多数错误都精确地告诉了你哪里不对,你只需要认真看。

手动删系统目录里的文件

磁盘快满的时候,打开root文件管理器,或者对某个看起来又大又没用的东西跑rm,很诱人。/usr、/etc、/var/lib、/lib这些目录在你眼里可能像杂物堆,但它们不是。

包管理器记着自己装了哪些文件。你手动删掉,结果可能是包损坏、库缺失,最坏的情况是系统起不来。

删除交给包管理器:apt remove、dnf remove或pacman -Rns。要腾空间,跑apt autoremove,用journalctl --vacuum-size裁剪日志,用ncdu找出到底是谁在吃磁盘。还有一条:没核对过两遍的路径,绝不跑rm -rf。

网上找到的命令和脚本照单全收

Linux教程里常带终端命令和脚本,承诺装软件、修配置、清垃圾。很多是正经的,但从陌生网站复制过来、不理解它做什么就执行,风险不小。

特别留意curl | sudo bash这种写法。它下载一个脚本并立刻运行,跳过了你检查内容的那一步。脚本可以改系统设置、删文件、装你不想要的东西,或者读取运行它的账户能访问的信息。

执行前先看。不认识的参数用man或--help查,核对来源,优先官方文档或Arch Wiki。把脚本下载下来,用less或nano过一遍再执行。还是拿不准,先在虚拟机或容器里试。

不做备份就改系统

就算你理解了命令、也用对了,系统改动也不总按计划走。改一处配置可能让应用起不来,更新驱动可能出问题,升级包可能引入意外冲突。没有备份,一个失误就能让你丢数据或者系统没法用,修起来比改动本身花的时间长得多。

不必每次小调整都备份整个系统。但编辑重要配置文件前复制一份,是很简单的预防:cp file file.bak。整个系统层面,大改动前用Timeshift打快照,文件系统支持的话用Btrfs或ZFS快照。个人文件可以用Deja Dup、Borg、rsync这类工具。

Linux并不脆弱。它只是严格照你说的做,所以你的习惯才重要。先读再跑,收住权限,大改之前先备份。这几个简单习惯,能让一个小失误停在原地,不至于扩散成整个系统的问题。