簡體   English   中英

通過Cron作業將Python腳本備份到目錄

[英]Python script to backup directory via Cron job

我正在嘗試將下面的代碼作為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)像在根用戶的crontab中一樣安排cron作業

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

我認為上述設置應該可以工作。 如果不是,請嘗試直接運行腳本,讓我知道它引發了什么錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM