服务器运维中常见的“坑”:20个让你熬夜的瞬间

服务器运维中常见的“坑”:20个让你熬夜的瞬间

凌晨三点被叫醒,通常不是因为什么大事。一个空格、一个斜杠、一个忘记加的参数。你在黑暗中盯着屏幕,那行红色报错在你面前闪烁,旁边的猫被你吓醒了。你不是一个人在战斗。每个运维都有一串这样的故事。

以下20个坑,你踩过几个?


第一坑:rm -rf 后面跟了个空格

rm -rf / home/project 和 rm -rf /home/project 是两回事。前者删除根目录,后者删除项目目录。多一个空格,服务器就没了。

预防:永远先用ls确认要删的东西,再用rm。或者把rm别名成rm -i

第二坑:改了防火墙规则忘了保存

你加了条规则,测试通过。然后你重启了防火墙,规则没了,自己也被踢出去了。深夜趴在机房门口等开门。

预防:改完防火墙先保存规则再测试,保存后再重启验证。

第三坑:在生产环境直接修改配置

你在测试环境试得好好的,复制到生产,改了,保存,服务崩溃。测试环境和生产环境不一样。

预防:永远先在预发布环境验证,再上生产。实在没有预发布,改之前先把当前配置备份。

第四坑:忘了配置自动启动

你装了个服务,配好了,能跑了。重启服务器后,服务没起来。因为忘了systemctl enable

预防:装完服务后,检查systemctl is-enabled,确保开机自启动。

第五坑:磁盘写满前没注意

日志在悄悄增长,你在睡觉。凌晨2点日志写满分区,数据库挂了,网站挂了。监控告警发到了被静音的手机上。

预防:磁盘监控告警设到80%,别等满了再告警。满的时候已经来不及了。

第六坑:数据库忘记加索引

上线新功能,用户开始用。一周后数据库CPU从20%冲到90%。查慢查询日志,发现新表没加索引。

预防:上线前用EXPLAIN检查所有SQL,确认走索引。

第七坑:备份了但没验证

你每天备份,很安心。某天数据库坏了,恢复备份,发现备份文件损坏了。你从来没测试过恢复。

预防:每月做一次完整的恢复测试,把备份恢复到测试环境,验证数据正确性。

第八坑:SSL证书过期

Let’s Encrypt会自动续期,你认为它永远不会过期。直到某天用户看到红色警告页面。续期脚本不知道什么时候停了。

预防:加一个证书到期监控,提前30天告警。Uptime Kuma或Prometheus都能做到。

第九坑:改了SSH配置忘了留窗口

你改完/etc/ssh/sshd_config,重启SSH,然后连接断了。你发现自己配错了密钥,再也连不上。只能去机房接显示器。

预防:改SSH配置后,不要关当前窗口。开一个新窗口测试新配置。新窗口能连上再关旧窗口。

第十坑:端口被占用

你启动服务,报错“Address already in use”。你杀了旧的进程,启动了新的。然后发现旧的进程是你同事在跑的测试服务。他比你更崩溃。

预防lsof -i :端口号看看是谁在用,确认用途再操作。

第十一坑:系统更新后软件不兼容

你跑了yum update -y,所有包都升级了。然后你的PHP应用因为新版本不兼容,崩溃了。

预防:不要在生产环境无差别更新。先读更新日志,确认兼容性,在测试环境试跑一段时间。

第十二坑:忘记清理旧内核

更新了内核,旧内核还在。/boot分区满了,以后更新不了。

预防:用package-cleanup --oldkernels --count=2清理旧内核,保留最近2个。或者用autoremove自动清理。

第十三坑:改系统文件没备份

你改了/etc/passwd,保存后发现格式错了。系统登不进去了。你忘了备份原文件。

预防:改任何系统文件前,先cp备份。改了出问题,cp回来。

第十四坑:忘了检查磁盘挂载

你在/mnt/backup写了很多数据。重启后发现/mnt/backup没有挂载,数据写在了根分区。根分区满了,系统挂了。

预防:在/etc/fstab里配置自动挂载,用mount -a测试后再重启。

第十五坑:把密码存在代码仓库

你在代码里写死了数据库密码,推到了GitHub。公共仓库,任何人都能看到。你的数据库被黑了,还不知道是怎么进来的。

预防:用环境变量存敏感信息,.env文件加到.gitignore。用密钥管理服务(Vault、Secrets Manager)。

第十六坑:改了域名解析忘了调TTL

你要换服务器IP,改了域名解析。然后发现用户访问还是旧的,因为TTL设了24小时。你只能等明天。

预防:换IP之前,提前把TTL调到300秒。换完之后再调回去。

第十七坑:在生产环境跑大查询

你在生产数据库跑了一个SELECT COUNT(*) FROM huge_table。表有1亿行,查询跑了5分钟,锁表,其他用户都在等。

预防:大查询放从库跑,或者用pt-query-digest分析,不要在生产主库直接跑。

第十八坑:忘记检查SELinux

你改了Nginx配置,网页还是403。你查了权限、目录、用户,都没错。最后发现是SELinux在阻止。

预防:遇到诡异权限问题,先setenforce 0临时关掉测试,确认是SELinux再针对性配置。

第十九坑:删了别人正在用的文件

你删了一个大日志文件,以为没人用。实际上有个进程还在往里面写。空间没释放,你还以为删掉了。

预防:用lsof | grep deleted看哪些文件被删了但还在使用。重启进程才能释放空间。

第二十坑:没有写操作记录

你半夜起来修了个问题,修好了,回去睡了。第二天大家问“谁改了什么”,你说“不记得了”。

预防:加一个日志记录习惯,或者用script命令记录操作历史。操作完写一行注释。


最后一句

这20个坑,我踩过其中15个。不是因为我笨,是因为这行就是靠踩坑成长的。每个坑都让我记住了一课:备份、验证、先看再改、留后路。

你不可能避开所有坑。但你可以把别人的坑记下来,少踩几个。你的前半夜属于工作,但后半夜应该属于自己。

知识库

服务器文件传输的5种方式:scp、rsync、sftp、rz/sz、WebDAV对比

2026-6-17 14:43:23

主机测评

[评测] 阿里云轻量应用服务器深度评测 (2025):适合新手建站吗?

2025-4-30 11:34:56

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧