评测概述
刚用 Linux 那会,对着黑屏白字的终端总不敢随便输命令,尤其是Linux 关机,生怕直接断电丢了数据。后来摸熟了才发现,最稳妥的当属shutdown命令,堪称 “关机界的老大哥”。它的好处是够安全,会先给所有登录用户发警告,比如输shutdown -h 10 "10分钟后关机,赶紧存文件",不管是本地还是远程登录的人,屏幕上都会弹出提示,还能从容关闭后台服务、卸载文件系统,完全不用担心数据没保存。要是着急关机,shutdown -h now能一步到位,这里的 “now” 就是 “立刻” 的意思,虽然快但仍会走安全流程,比直接拔电源靠谱多了。更方便的是它能取消关机,万一设置完定时关机又改了主意,输shutdown -c就行,还能加句说明比如shutdown -c "维护取消,继续使用",其他用户能立马看到通知,特别适合多用户环境。
poweroff命令则是 “懒人首选”,输完直接关机断电,全程不啰嗦。我自己的 Linux 笔记本常用这个,毕竟就我一个人用,不用通知谁,点完命令起身拿包,回来电脑已经关好了。不过要注意,它不会提前打招呼,要是在服务器上用,很可能让同事的工作白做,上次我帮朋友维护服务器,顺手输了poweroff,结果他没保存的代码全没了,现在想起来还觉得尴尬。
halt命令和poweroff有点像,但脾气更 “温和”—— 它只会停止系统运行,不一定会断电。有次我在旧电脑上装了老版本 Linux,输halt后屏幕黑了,但主机还在转,得手动按电源键才断电。后来查资料才知道,这是因为老硬件不支持自动断电功能,现代 Linux 系统里halt -p能强制断电,和poweroff效果差不多,不过日常用还是直接选poweroff更省心。
现在新一点的 Linux 系统(比如 Ubuntu 16.04 以后的版本)都支持systemctl命令,关机用systemctl poweroff,重启用systemctl reboot。这个命令兼容性强,不管是服务器还是个人电脑都能用,而且能清楚看到服务关闭的过程,比如 “正在停止 nginx 服务”“卸载 /home 分区”,心里特别踏实。我现在管理云服务器都用它,出问题时还能通过日志排查哪个服务没关干净。
还有个冷门但有用的init 0命令,它是通过改变系统运行级别来关机的(Linux 里 0 代表关机,6 代表重启)。以前在机房维护物理服务器时用过,哪怕其他命令失灵了,init 0基本都能生效,不过它太 “硬核”,新手不建议随便用,万一输成init 6就变成重启了,容易手忙脚乱。
用这些命令有几个坑得避开:一是普通用户要用sudo开头,比如sudo shutdown -h now,不然会提示 “权限不够”;二是远程服务器千万别用poweroff,最好用shutdown给个缓冲时间;三是强制关机尽量别用poweroff -f,除非系统卡死,不然文件系统容易损坏,我早年就吃过这亏,修复了半天才找回数据。
其实不用死记硬背,记住场景就行:多用户环境选shutdown,单用户图快用poweroff,新系统用systemctl更规范,紧急情况再考虑init 0。用得多了就会发现,这些命令比点鼠标还灵活,安全感也足多了。