为什么 crontab 中的重定向会导致零字节文件?

为什么 crontab 中的重定向会导致零字节文件?

系统:Xubuntu 13.10

当我有这个 crontab 条目时

*/5 * * * * cat /home/dbk/.bash_aliases &> /home/dbk/Desktop/junk

junk字节大小为0.

跑步

$ cat /home/dbk/.bash_aliases &> /home/dbk/Desktop/junk

给出一个具有适当大小和内容的文件。

答案1

探针因为cron运行任务与sh.是将和重定向到同一文件的&>快捷方式,而不是在.stderrstdoutbashsh

在 中sh,您的命令:

cat /home/dbk/.bash_aliases &> /home/dbk/Desktop/junk

意思是分别运行两个命令:

  • cat /home/dbk/.bash_aliases在后台运行

    cat /home/dbk/.bash_aliases &

  • 截断垃圾文件。

    > /home/dbk/Desktop/junk

因此,您应该使用bash以下方式运行命令crontab

*/5 * * * * bash -c "cat /home/dbk/.bash_aliases &> /home/dbk/Desktop/junk"

或者使用更便携的方式:

*/5 * * * * cat /home/dbk/.bash_aliases > /home/dbk/Desktop/junk 2>&1

相关内容