由 cron 执行时,脚本的 stdout 和 stderr 不会被重定向

gle*_*her 3 bash shell cron stdout crontab

./script &>> log.txt

我得到了一个不错的日志文件,但是如果我有由 cron 执行的相同命令,那么可以说 crontab 看起来像这样:

* * * * * '/home/user/script &>> /home/user/log.txt'
Run Code Online (Sandbox Code Playgroud)

log.txt 将是空的,我试过 " 和 ' 和 ` 并且没有刻度来包含命令,知道为什么流不会被写入文件吗?

Den*_*son 6

可能是 cron 使用的 shell 不支持&>>Bash 支持的速记重定向运算符。

您应该使用 Bourne shell 和其他支持的可移植形式:

* * * * * /home/user/script >> /home/user/log.txt 2>&1
Run Code Online (Sandbox Code Playgroud)

这表示“将标准输出(文件描述符 1)附加到文件并将标准错误(文件描述符 2)发送到同一位置”。

而且你不需要任何引号。