【发布时间】:2014-01-19 22:06:56
【问题描述】:
我正在尝试将下面的代码作为 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
谁能强调我可能做错了什么?提前致谢!
【问题讨论】:
-
只是为了清除最初的帖子...我可以从 CLI 运行代码,但是当它通过 crontab 安排时似乎什么也没发生..
-
您应该将 cronjob 的输出重定向到日志文件以捕获错误消息,例如
17 12 * * * /usr/bin/python /app/nagios_install/backup/nagios_backup.py >> /var/log/nagios_backup.log 2>&1 -
对于初学者,您当然不希望您的 crontab 的
SHELL为/usr/bin/python,因为您的命令对 python shell (/usr/bin/python /app/nagios_install/backup/nagios_backup.py) 没有任何意义。如果这还不够,您应该将输出放在日志文件中。
标签: python cron crontab nagios