我试图以下面的代码为cronjob而没有任何运气...
import sys
import time
import tarfile
def main(argv):
#f = open('/tmp/backup-log.txt', 'a')
#f.write('variable startn')
timeStamp = time.strftime('%y%m%d')
nagiosFolder = '/app/nagios/'
fileName = '/app/nagios_install/backup/nagios-backup-%s.tar.gz' % timeStamp
#f.write('variable endn')
try:
#f.write('tar startn')
tarGeza = tarfile.open(fileName, 'w:gz')
tarGeza.add(nagiosFolder)
tarGeza.close()
#f.write('tar endn')
#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可执行路径 - 始终有机会在Productions Server上的可执行文件路径有所不同来自开发环境。
#!/usr/bin/env python
2)将脚本模式更改为 755
,以使脚本可执行
sudo chmod 755 /app/nagios_install/backup/nagios_backup.py
3)从根用户的crontab
sudo crontab -e
crontab -e
默认情况下打开当前用户的crontab,而不是root用户的crontab。当前用户可能无法获得nagios
目录。
4)从您的crontab中删除SHELL
变量,首先不需要。您也不使用变量LOGNAME
,HOME
,因此也可以删除它们,我认为它们也不需要。
5)安排cron工作,就像在root用户的crontab中关注
17 12 * * * /app/nagios_install/backup/nagios_backup.py >> /var/log/nagios_backup.log 2>&1
我认为以上设置应该有效。如果不是,请尝试直接运行脚本,然后让我知道它引发的错误。