gpt4 book ai didi

python - Tar 无法通过 cronjob 工作

转载 作者:太空宇宙 更新时间:2023-11-04 04:04:05 25 4
gpt4 key购买 nike

我有一个 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 运行。

最佳答案

问题可能是从 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 风格之间可能有所不同。

关于python - Tar 无法通过 cronjob 工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22000568/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com