在终端中回应'at'命令失败

时间:2012-10-19 06:27:04

标签: bash command-line-interface at-job

以下内容应于今天上午9:00在我的Linux命令行上打印“hello”(或一些提醒):

$ at 9:00AM
warning: commands will be executed using /bin/sh
at> echo "hello"
at> <EOT> 

但是,在指定的时间,没有任何反应。

我有一个空etc/at.deny而没有/etc/at.allow文件,因此使用该命令的权限不会有任何问题。此外,在上午9:00写文件:

$ at 9:00AM
at> echo "hello" > /home/mart/hello.txt
at> <EOT>
$ cat /home/mart/hello.txt
hello

所有作业都按计划显示,我只是无法获得任何输出到终端窗口(我在使用终结者的Crunchbang Linux上)。为什么?我是否需要以某种方式为该输出指定窗口?

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

at运行来自守护程序(atd)的命令,该守护程序无法访问您的终端。因此,脚本中的输出不会出现在您的终端中(除非您在命令中使用右侧tty)。

相反,它按man at说:

  

如果有的话,用户将通过命令邮寄标准错误和标准输出。

如果您的机器配置得当,您可以使用mail访问这些报告。

如果您想要at写入您的终端,您可以尝试将输出汇总到write,将消息写入用户的TTY,或者wall,如果您想要写入连接到系统的每个终端。

答案 1 :(得分:0)

好的, nneonneo的解释促使我使用wall,它向所有用户发送消息。因此,在终端窗口中设置自己的提醒可以这样做:

$ at 9:00AM
warning: commands will be executed using /bin/sh
at> echo "hello" | wall
at> <EOT>