at 命令似乎正在丢弃输出

at 命令似乎正在丢弃输出

在 Debian Jessie 或 Raspbian Jessie 上运行“at”,无论我做什么,输出似乎都会掉进黑洞。我想捕获错误,但即使在 stdout 这种简单的情况下,我似乎也无法捕获输出。

我正在尝试,例如:

echo "curl 'http://www.example.com' > tmp.log" | at -M -t 201706042241.36

tmp.log 始终为空,但未curl执行相同的操作at会产生预期的 html。如果我省略 -MI,则什么也不会得到。

我真正想要的是错误输出。如果我尝试

echo "curl 'http://badbadbad.example.com' 2>&1 > tmp.log" | at -M -t 201706042241.36

我得到一个空的 tmp.log;如果我省略 -MI,则会得到一封空的电子邮件。如果我省略重定向,则:

echo "curl 'http://badbadbad.example.com'" | at -t 201706042241.36

我还收到了一封空邮件。我本以为会看到curl: (6) Could not resolve host: badbadbad.example.com

/var/log 中的 syslog、messages 或 daemon.log 中没有任何内容。我以普通用户身份(而不是 root 用户)运行命令。

at似乎劫持并丢弃了每次获取我正在运行的命令的输出的尝试。我是不是误解了什么at

答案1

您正在尝试通过管道|传输输出你的命令,at而不是给它命令在指定的时间运行。从标准输入 (提示) 或文件 ( )at读取命令。概要:at>-f

at [-V] [-q queue] [-f file] [-mldbv] TIME
at [-V] [-q queue] [-f file] [-mldbv] -t time_arg

这是一个很好的带有使用示例的文章

相关内容