2014-01-19 47 views
1

我想下面的没有任何的运气的cronjob运行的代码......Python脚本通过cron作业的备份目录

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:]) 

的注释的部分是debbuging目的,每当代码运行时,它显示为该代码已经完成没有错误:

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 

一nd权限如下:

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

任何人都可以请突出显示我可能会做错什么?提前致谢!

+0

只是为了澄清最初的帖子...我能够运行来自CLI的代码,但是当它可以通过crontab没有什么安排似乎发生.. – rolandvarga

+0

请在您的cronjob的输出重定向到一个日志文件,以获取错误信息,例如'17 12 * * *的/ usr/bin中/ Python的/app/nagios_install/backup/nagios_backup.py >> /var/log/nagios_backup.log 2>&1' –

+2

首先,你当然不希望'SHELL'您的crontab来是'/ usr/bin中/ python',因为你的命令将没有任何意义的蟒蛇壳('在/ usr/bin中/ Python的/app/nagios_install/backup/nagios_backup.py ')。如果这还不够,您应该将输出放在日志文件中。 –

回答

3

只是一些从我结束提示 - 我怎么会尝试安排整个事情

1)包含在用于拾取蟒蛇可执行python脚本的顶部shebang行,然后删除从Python可执行文件的路径cron条目 - 在开发环境中,生产服务器上的可执行文件的路径总有不同的可能性。

#!/usr/bin/env python 

2)更改脚本的方式755使脚本可执行

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

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

sudo crontab -e 

crontab -e打开当前用户的crontab默认情况下,而不是root用户的crontab。当前用户可能无法接受nagios目录。

4)从你的crontab中删除SHELL变量,它并不需要摆在首位。您未使用变量LOGNAMEHOME要么,所以它们也可以被删除,我不认为他们要么是需要的。

5)安排cron作业像下面在你的root用户的crontab

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

我觉得上面的设置应该工作。如果没有,请尝试直接运行脚本,并让我知道它会抛出什么错误。

+0

这是一个非常详细的答案!删除变量并使用root的crontab确实解决了这个问题。非常感谢您的帮助ansh0l! – rolandvarga