Unix/Linux下使用shutdown命令时,如何阻止wall消息发送及终端阻塞?
Unix/Linux下使用shutdown命令时,如何阻止wall消息发送及终端阻塞?
嘿,这个需求我之前做脚本的时候也遇到过,给你几个靠谱的解决办法:
用shutdown自带参数直接禁用wall消息
其实shutdown本身就内置了跳过wall通知的选项,你只需要加上--no-wall参数就行。比如你原本要30分钟后关机的命令是shutdown +30,改成这样:shutdown --no-wall +30这样系统只会执行定时关机操作,不会给所有登录用户发默认的关机警告,完美贴合你的需求,不用额外折腾其他工具。
用at命令配合halt/poweroff实现无消息定时关机
如果你的系统是比较老的Unix/Linux发行版,shutdown没有--no-wall选项的话,可以换个思路:用at命令调度halt或者poweroff(这两个命令默认不会发wall消息)。比如要30分钟后关机,执行:echo "poweroff" | at now +30 minutes这样at会在指定时间自动执行关机命令,全程不会有默认通知,你完全可以在脚本里用
wall命令发自己定制的消息。临时重定向输出的兜底方案
要是你临时需要屏蔽消息,还可以把shutdown的标准错误输出重定向到/dev/null——不过这个是“隐藏”消息而非“不发送”,但效果上用户看不到。命令如下:shutdown +30 2>/dev/null不过还是优先推荐第一个方法,更直接规范。
另外,如果你要自己发送自定义的wall消息,直接在脚本里用wall命令就行,比如:
wall "温馨提示:系统将在30分钟后自动关机,请及时保存工作!" shutdown --no-wall +30
这样既发了你想要的消息,又避免了shutdown的默认通知,一举两得。
备注:内容来源于stack exchange,提问作者Steam Ranger
相关产品推荐
相关产品推荐

