簡體   English   中英

無法讓Crontab工作

[英]Can't get Crontab to work

我一直試圖讓crontab工作一段時間但它似乎並不想工作。 我需要初始化每個午夜的python腳本從命令終端完美運行。 我的python腳本的位置是:

/home/rv/ncbi-blast-2.2.23+/database_backup/backup.py

我的感染看起來像這樣:

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/home/rv/ncbi-blast-2.2.23+/database_backup
MAILTO=root
HOME=/
# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  *  command to be executed
0 0 * * * /usr/bin/python /home/rv/ncbi-blast-2.2.23+/database_backup/backup.py

我的python腳本如下所示:

#!/usr/bin/python

from subprocess import Popen
import datetime

today = datetime.date.today()

today = str(today)

#print today

f = open("/home/rv/ncbi-blast-2.2.23+/database_backup/%s.sql" % (today), "w")
x =  Popen(["mysqldump", "-u", "root", "-p*****", "normalisation"], stdout = f)
x.wait()
f.close()

我知道哪里出錯了?


只是看了一下cron日志,我每次嘗試都會得到這個

(root) BAD FILE MODE (/etc/crontab)

當我嘗試使用shell腳本時,我也遇到了同樣的錯誤

如果它適用於您的用戶帳戶而不是來自cron,則通常不是cron。 cron守護程序嘗試啟動您的應用程序,但由於它沒有設置環境變量,它將失敗。 創建一個簡單的shell腳本來設置環境變量並啟動python腳本。 (您沒有PATH,因此您必須使用完整路徑名等)

查看您的腳本,您可以使用shell腳本命令輕松完成所有這些操作。 Shell腳本被大大低估了。

也許不是使用Python,而是制作一個bash腳本:

mysql_backup.sh

#!/bin/bash
/PATH/TO/mysqldump -u root -p***** normalisation > /SOMEOTHER/PATH/TO/$(date '+%Y-%m-%d').sql

並將其放在您的crontab中:

0 0 * * * /PATH/TO/mysql_backup.sh 

您可以只檢查crontab cmd,並手動執行這些cmd,例如

/usr/bin/scrond run-parts /etc/cron.daily

我不知道你哪里出錯了,但是你可以將stderr和stdout重定向到你的crontab條目中的一個文件,它可能會給你一個提示。 我的語法記憶很生疏,但它類似於<yourfile>.py &> errors.txt

當然,這也引入了另一個失敗點,即您無權在任何放置errors.txt的地方寫入。 ;-)

暫無
暫無

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

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