焦油不能从crontab工作

时间:2014-02-24 22:33:08

标签: python linux shell cron crontab

我有一个python脚本,可以在运行时备份sql数据库。

当我手动破坏它但没有运行tar和rm命令时,它完美无瑕地工作!

在备份之前我运行mysqldump命令,然后运行它之后。这是处理备份的脚本的一部分

os.system('tar -cvzf Backup_' + formt + '.tar.gz ' + 'sql_Backup_' + formt + '.sql')
os.system('rm ' + 'sql_Backup_' + formt + '.sql')

在cronjob中我有

# Python SQL Backup Script
00 23 * * 07 sudo /usr/bin/python /home/user/scripts/SQLbackup.py

当我从shell本身运行它时运行正常 sudo python /home/user/scripts/SQLbackup.py

但是cronjob没有。它只运行脚本并创建sql文件,就是这样。它不会压缩它,并且在压缩之后也不会删除sql文件。

我将此添加到sudoers文件

root ALL=(ALL) NOPASSWD:/bin/tar
sudo ALL=(ALL) NOPASSWD:/bin/tar

仍然没有。我把root和sudo都放在100%肯定。

请记住:它手动运行完美,但不能完全从crontab运行。

1 个答案:

答案 0 :(得分:0)

问题可能是从crontab运行脚本时未正确设置$PATH,这导致脚本找不到指定的二进制文件。

同时检查脚本是否在正确的目录中执行。

修改脚本以包含tarrm的完整路径,并测试它是否更有效:

os.chdir('/path/to/where/sqlfile/resides')
os.system('/usr/bin/tar -cvzf Backup_' + formt + '.tar.gz ' + 'sql_Backup_' + formt + '.sql')
os.system('/bin/rm ' + 'sql_Backup_' + formt + '.sql')

请注意,tar通常安装在/usr/bin中,但在不同的unix风格之间可能会有所不同。