繁体   English   中英

Linux crontab:使终端出现警告

[英]Linux crontab: make terminal appear with warning

我将crontab设置为每晚某个时间关闭计算机。 它还显示警告,并允许取消该过程。

我的问题是,如果终端尚未打开,则无法显示警告终端。 我希望终端出现并显示警告,并保留取消它的可能性。

我包括当前的cron命令。 我究竟做错了什么? 谢谢。

0 3 * * * /sbin/shutdown -r 5 "Shutting down in five minutes..."

这是wall / mesgshutdown使用的广播机制)的工作方式-它与终端紧密相连,并且不了解图形环境。

  1. 一种替代方法是创建一个脚本,如果有可用消息,该脚本将生成一个弹出窗口。 这要求您将TTY分配到某个位置(请在答案末尾检查详细信息。)

  2. 另一个更好,更简单的恕我直言,替代方法是完全放弃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才能运行,并且会生成可能令人讨厌的弹出窗口。

话虽如此,我相信这个问题更适合于SuperUserUnix&Linux SE


具体而言wall ,通过使用shutdown只是通过系统中的所有可写TTY中循环(如/dev/pts/1 )和一字符串写入它们。 例如:

  1. 在终端A上, sudo tail -f /dev/tty50
  2. 在终端B上, 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM