我有一个python脚本,可以在运行时备份sql数据库 .
当我手动破坏它但它没有运行tar和rm命令时,它完美无缺地工作!
在备份之前我运行mysqldump命令ofcourse然后我运行它 . 这是处理备份的脚本的一部分
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 回答
问题可能是从crontab运行脚本时未正确设置
$PATH
,这导致脚本找不到指定的二进制文件 .还要检查脚本是否在正确的目录中执行 .
修改脚本以包含
tar
和rm
的完整路径,并测试它是否更好:请注意
tar
通常安装在/usr/bin
中,但在不同的unix风格之间可能会有所不同 .