凌晨在服务器上敲完 shutdown -h now,屏幕一黑,SSH 断了,然后就没再连上。那台机器在机房,得等人去按电源键。
这是 Linux 的写法。-h 是 halt,now 是立刻执行。同样的命令丢进 Windows 的命令提示符,结果完全不是一回事。
Windows 用的是斜杠参数
Windows 的 shutdown.exe 走 /s、/r、/h 这一套。立刻关机是 shutdown /s /t 0,重启是 shutdown /r /t 0,休眠才是 shutdown /h。在 cmd 里敲 shutdown -h,多半弹一行语法提示加一串用法说明,机器不动。
延时靠 /t,单位是秒。shutdown /s /t 600 是十分钟后关。中途反悔,shutdown /a 撤销,前提是倒计时还没走完。
PowerShell 里还有更直接的两条:Stop-Computer 关机,Restart-Computer 重启。加 -Force 会强关正在运行的程序,没保存的文档就丢了。
Linux 这边 -h 后面跟什么
- shutdown -h now:立即关机断电
- shutdown -h +10:十分钟后关,已登录用户会收到广播
- shutdown -h 23:30:指定时间点关
- shutdown -c:取消已经排上的关机
注意 -h 后面光秃秃不加时间,部分发行版会判成非法用法,直接甩一段 usage,什么也不做。
远程机器上先想两秒
执行前确认有没有带外管理、定时开关机或者云控制台。家用宽带下的机器关掉就真起不来了,只能等人上门。
另外参数里的空格要用半角。全角空格敲进去,整条命令会被当成一个程序名,报错是「不是内部或外部命令」,一眼很难看出来。
macOS 又是另一套:sudo shutdown -h now,少了 sudo 会提示权限不足。三个系统三套参数,混了最轻是不生效,最重是关掉线上机器。