在 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
这是一个很好的带有使用示例的文章。