上周朋友老张的公司网站突然打不开,一查发现数据库挂了。排查半天,原来是运维小哥半夜远程关服务器,直接拔了电源——结果 MySQL 的 InnoDB 日志没刷完,第二天启动直接报错。
关机不是断电,是让系统自己收好摊子
很多刚接触服务器的人以为“关机=按一下物理按钮”,其实 Linux 或 Windows Server 上一次规范的关机,核心是让操作系统有足够时间:停止服务、刷新缓存、卸载文件系统、同步磁盘写入。跳过这些步骤,轻则日志错乱、文件损坏,重则整个 /var/lib/mysql 或 /etc 目录变砖。
Linux 服务器标准关机流程
登录到服务器后(SSH 或控制台),优先用 shutdown 命令:
sudo shutdown -h now这条命令会通知所有进程准备终止,发送 SIGTERM 信号,等 10 秒再发 SIGKILL 强制结束残留进程,最后调用内核关机流程。如果想 5 分钟后关机,可以写成:
sudo shutdown -h +5 "系统将重启维护,请保存工作"看到终端输出 System halted 或 Power down 才算真正完成。此时风扇停转、LED 指示灯熄灭,才可断电。
Windows Server 别用 Alt+F4
图形界面下,点开始菜单→“关机”是安全的;但远程桌面里千万别用 Alt+F4 关掉远程窗口——那只是断开了连接,系统还在跑。正确做法是打开 PowerShell(管理员权限),运行:
Stop-Computer -Force或更稳妥的带延迟版本:
Stop-Computer -Force -Confirm:$false如果是 Core 版本无界面,直接在 CMD 中输入:shutdown /s /t 0
还有几个容易踩的坑
• NFS 或 CIFS 共享挂载点没 umount 就关机?大概率下次 mount 失败,得进救援模式修复。
• Docker 容器正在写日志,docker stop 还没跑完就 shutdown?容器 rootfs 可能处于半提交状态。
• 某些监控脚本监听了 /proc/sys/kernel/sysrq,误开 SysRq 键盘组合(比如 Alt+SysRq+O)会强制关机,绕过所有清理逻辑——这种操作只该出现在崩溃急救场景。
说白了,服务器关机就像合上一本正在写的笔记本:先写完最后一行,再盖上封面,最后放进抽屉。跳过前面两步,光把本子塞进抽屉,里面的内容早乱套了。