首页 文章

焦油不能从cronjob工作

提问于
浏览
0

我有一个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 回答

  • 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风格之间可能会有所不同 .

相关问题