为什么 bash rsync 脚本没有向文件写入任何内容?

为什么 bash rsync 脚本没有向文件写入任何内容?

Ubuntu 9.10

crontab -l

0 1 * * * /root/cron/rsync-93.193.99.111 &> /root/cron/rsync-93.193.99.111.log
0 3 * * * tail -100 /root/cron/rsync-93.193.99.111.log | msmtp[电子邮件保护]

ls -l /root/cron/rsync-93.193.99.111.log

-rw-r--r-- root root /root/cron/rsync-93.193.99.111.log

rsync-93.193.99.111.log 文件在 Nautilus 中显示大小为零。
我收到了一封电子邮件,但里面是空的。
运行 tail -100,也显示空输出,因此电子邮件是正确的。

为什么 bash rsync 脚本没有向文件写入任何内容?

答案1

我认为这是因为所使用的 shell&>不支持。请使用显式形式:shcron

0 1 * * * /root/cron/rsync-93.193.99.111 > /root/cron/rsync-93.193.99.111.log 2>&1

另外,你可以用 do 来sudo crontab -e代替 doing sudo suthen crontab -e

答案2

我同意丹尼斯对你的问题的评估。但我还有其他几点要提一下。

最重要的是,不要这样做:

0 1 * * * some command
0 3 * * * some other command that should run after the first one

如果第一个命令需要多于或少于两个小时怎么办?要确保第二个命令在第一个命令完成时运行,请将它们放在一行上:

0 1 * * * /root/cron/rsync-93.193.99.111 >/root/cron/rsync-93.193.99.111.log 2>&1; tail -100 /root/cron/rsync-93.193.99.111.log | msmtp [email protected]

另外,您可能希望利用 cron 的自动发送错误邮件功能。(这假设您的系统已正确设置邮件,但如果您必须运行msmtp而不是,则可能并非如此mail。)

[email protected]
0 1 * * * /root/cron/rsync-93.193.99.111 2>&1 | tee /root/cron/rsync-93.193.99.111.log | tail -n 100

相关内容