[英]Linux crontab: make terminal appear with warning
我将crontab设置为每晚某个时间关闭计算机。 它还显示警告,并允许取消该过程。
我的问题是,如果终端尚未打开,则无法显示警告终端。 我希望终端出现并显示警告,并保留取消它的可能性。
我包括当前的cron命令。 我究竟做错了什么? 谢谢。
0 3 * * * /sbin/shutdown -r 5 "Shutting down in five minutes..."
这是wall
/ mesg
( shutdown
使用的广播机制)的工作方式-它与终端紧密相连,并且不了解图形环境。
一种替代方法是创建一个脚本,如果有可用消息,该脚本将生成一个弹出窗口。 这要求您将TTY分配到某个位置(请在答案末尾检查详细信息。)
另一个更好,更简单的恕我直言,替代方法是完全放弃shutdown
消息传递系统,并生成一个终端,执行类似echo Shutting down in 5 minutes...; sleep 300; shutdown
echo Shutting down in 5 minutes...; sleep 300; shutdown
echo Shutting down in 5 minutes...; sleep 300; shutdown
。 这种方法的好处是,您只需按Ctrl + C即可取消它。 不利的一面是,取决于生成终端的方式,它需要X才能运行,并且会生成可能令人讨厌的弹出窗口。
话虽如此,我相信这个问题更适合于SuperUser或Unix&Linux SE 。
具体而言wall
,通过使用shutdown
只是通过系统中的所有可写TTY中循环(如/dev/pts/1
)和一字符串写入它们。 例如:
sudo tail -f /dev/tty50
sudo wall test
将显示消息test
三遍:一次在终端B中,一次在终端A中,另一次在终端A内部的tail
,从TTY50读取(在此示例中,我们需要sudo
将消息广播到我们不拥有的TTY中) 。
由于您的桌面上没有打开任何控制台(=没有TTY),因此没有人可以看到wall
消息。 因此,按照建议1进行阅读,您需要将自己的TTY保留在某处。 我相信“ 分配伪终端”一文解释了如何以低级方式进行操作。 实现它的另一种方法是使用超级用户权限监视已经分配的TTY,例如TTY50,尽管我不建议这样做。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.