我有一个非常简单的bash脚本:
#!/opt/bin/bash
/opt/bin/rdiff-backup --force --print-statistics myhost::/var/bkp /volume1/backups/sql 2>&1 > /var/log/rdiff-backup.log;
/opt/bin/rdiff-backup --force --print-statistics myhost::/var/www/vhosts /volume1/backups/vhosts 2>&1 >> /var/log/rdiff-backup.log;
/opt/bin/rdiff-backup --force --print-statistics myhost::/etc /volume1/backups/etc 2>&1 >> /var/log/rdiff-backup.log;
/opt/bin/rdiff-backup --force --print-statistics /volume1/homes /volume1/backups/homes 2>&1 >> /var/log/rdiff-backup.log;
cat /var/log/rdiff-backup.log | /opt/bin/nail -s "rdiff-backup log" me@email.com;如果我从命令行运行脚本,以这种方式运行:
nohup /path/to/my/scipt.sh &它工作正常,将每个rdiff备份统计报告附加到rdiff-backup.log,并按照预期将该文件发送到我的电子邮件地址。但是,如果我把脚本放在crontab中,脚本只生成一个rdiff备份作业,通过电子邮件发送统计信息。我不明白,因为剧本不一样.
有什么想法吗?
这是我的履历:
30 19 * * * /opt/bin/bash /volume1/backups/backup.sh通过crontab,只有最后一个作业被正确执行,我认为这是因为这是唯一的本地备份。当我从命令行执行脚本时,我使用根用户,根用户的公钥位于远程计算机的/ root /./ssh/authorized_ key中。crontab文件的所有者也是根用户,我使用根帐户通过"crontab -e“创建它们。
发布于 2013-03-25 14:47:11
首先,您需要确保cron中使用的脚本没有输出任何内容,否则:
解决这一问题的方法是使用
30 19 * * * /opt/bin/bash /volume1/backups/backup.sh 2>&1 >> /var/log/rdiff-backup-cron.log;第二,在通过cron执行时,您似乎丢失了env变量,请尝试将env设置添加到脚本中。
#!/opt/bin/bash
. /root/.profile
/opt/bin/rdiff-backup --force --print-statistics myhost::/var/bkp /volume1/backups/sql 2>&1 > /var/log/rdiff-backup.log如果/root/.profile没有,请尝试添加. /root/.bashrc或/etc/profile
我希望这能帮到你。
https://stackoverflow.com/questions/15602683
复制相似问题