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

系统:Xubuntu 13.10

当我有这个crontab条目

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

垃圾的字节大小为0.

运行

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

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

最佳答案
探测因为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&
>截断垃圾文件.

> /家庭/ DBK /桌面/垃圾

所以你应该使用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

转载注明原文:shell – 为什么crontab中的重定向会导致零字节文件? - 代码日志