Не может заставить Crontab работать

Я пытался заставить 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()

Какая-либо идея, где я иду не так, как надо?


Просто посмотревший крон регистрируется, и я получил это в течение каждого раза запись, которую я попробовал

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

Я получил ту же ошибку, когда я попробовал сценарием оболочки также

5
задан dreeves 22 June 2010 в 19:07
поделиться

3 ответа

Возможно, вместо использования 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 
1
ответ дан 15 December 2019 в 06:15
поделиться

Я не знаю, где вы ошибаетесь, но вы можете перенаправить stderr и stdout в файл в записи crontab, который может дать вам подсказку. Моя синтаксическая память ржавая, но это что-то вроде .py &> errors.txt

Конечно, это также приводит к еще одной точке отказа, а именно, что у вас нет разрешения на запись, где бы вы ни находились. выкладываю errors.txt. ; -)

0
ответ дан 15 December 2019 в 06:15
поделиться

Если он работает из вашей учетной записи, но не из cron, это обычно не cron. Демон cron пытается запустить ваше приложение, но, поскольку он не устанавливает переменные среды, он завершится ошибкой. Создайте простой сценарий оболочки, чтобы настроить переменные среды и запустить сценарий python. (У вас нет PATH, поэтому вы должны использовать полные имена путей и т. Д.)

Глядя на ваш сценарий, вы можете довольно легко сделать все это, используя только команды сценария оболочки. Сценарии оболочки сильно недооценены.

1
ответ дан 15 December 2019 в 06:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: