为什么 echo 命令不能与 at 命令一起使用?

为什么 echo 命令不能与 at 命令一起使用?

当我输入:

at now + 1 min
at>play /usr/share/sounds/startrek.wav
at>ctrl+d

它有效,所以一分钟后实际上会播放声音。

但是,当我输入:

at now + 1 min
at>echo "Teresa the green vegetable lover"
at>ctrl+d

我没有从 shell 收到错误响应,但 1 分钟后也没有显示任何文本。

答案1

at 运行的命令不会在它们注册的终端中运行。一般来说,这没有意义:终端可能不再存在,或者可能被其他用户使用。命令运行时您甚至可能已经注销。

at 命令的输出将通过电子邮件发送给您。这是本地 Unix 电子邮件,而不是您在某些电子邮件程序中设置的任何外部 POP 或 IMAP 帐户。如果未设置本地电子邮件,该命令的输出将丢失。如果您的本地电子邮件未设置,本指南可能会帮助你。

如果您希望 at 命令与终端交互,则需要使用显式重定向。例如:

echo "echo hello >$TTY" | at now + 1 min

请注意,在此代码片段中,变量TTY由 shell 扩展,因此输入at类似于echo hello >/dev/pts/42.

相关内容