gpt4 book ai didi

通过 Cron 作业备份目录的 Python 脚本

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

我正在尝试将下面的代码作为 cronjob 运行,但没有任何运气......

import sys
import time
import tarfile

def main(argv):
#f = open('/tmp/backup-log.txt', 'a')
#f.write('variable start\n')
timeStamp = time.strftime('%y%m%d')
nagiosFolder = '/app/nagios/'
fileName = '/app/nagios_install/backup/nagios-backup-%s.tar.gz' % timeStamp
#f.write('variable end\n')

try:
#f.write('tar start\n')
tarGeza = tarfile.open(fileName, 'w:gz')
tarGeza.add(nagiosFolder)
tarGeza.close()
#f.write('tar end\n')
#f.close()
sys.exit(0)
except tarfile.TarError, tarexc:
#f.write('exception error')
#f.close()
print tarexc
sys.exit(1)

if __name__ == '__main__':
main(sys.argv[1:])

注释部分用于调试目的,每当代码运行时,它都会显示代码已完成且没有错误:

variable start
variable end
tar start
tar end

我的 crontab 设置是:

HOME=/usr/nagios/
LOGNAME=nagios
PATH=/usr/lib64/qt-.3/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/usr/bin/python
SHELL=/usr/bin/python

17 12 * * * /usr/bin/python /app/nagios_install/backup/nagios_backup.py

权限如下:

-rwxrwxr-x 1 nagios root 1009 Jan 17 11:00 /app/nagios_install/backup/nagios_backup.py

任何人都可以强调我可能做错了什么吗?提前致谢!

最佳答案

只是我的一些提示 - 我将如何安排整个事情

1) 在 python 脚本的顶部包含一个 shebang 行以获取 python 可执行文件并从 cron 条目中删除 python 可执行文件路径 - 总是有生产服务器上可执行文件的路径与开发环境不同的可能性很小。

#!/usr/bin/env python

2) 将脚本的模式更改为755 使脚本可执行

sudo chmod 755 /app/nagios_install/backup/nagios_backup.py

3) 从 root 用户的 crontab 安排 cron 作业

sudo crontab -e

crontab -e 默认打开当前用户的 crontab,而不是 root 用户的 crontab。当前用户可能无法访问 nagios 目录。

4) 从您的 crontab 中删除 SHELL 变量,它本来就不需要。您也没有使用变量 LOGNAMEHOME,因此也可以删除它们,我认为也不需要它们。

5) 在你的 root 用户的 crontab 中安排 cron 作业

17 12 * * * /app/nagios_install/backup/nagios_backup.py >> /var/log/nagios_backup.log 2>&1 

我认为上述设置应该可行。如果没有,请尝试直接运行脚本并让我知道它抛出的错误。

关于通过 Cron 作业备份目录的 Python 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21223322/

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