![为什么 crontab 中的重定向会导致零字节文件?](https://linux22.com/image/51826/%E4%B8%BA%E4%BB%80%E4%B9%88%20crontab%20%E4%B8%AD%E7%9A%84%E9%87%8D%E5%AE%9A%E5%90%91%E4%BC%9A%E5%AF%BC%E8%87%B4%E9%9B%B6%E5%AD%97%E8%8A%82%E6%96%87%E4%BB%B6%EF%BC%9F.png)
系统: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
.是将和重定向到同一文件的&>
快捷方式,而不是在.stderr
stdout
bash
sh
在 中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