Я пытался заставить 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)
Я получил ту же ошибку, когда я попробовал сценарием оболочки также
Возможно, вместо использования 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
Я не знаю, где вы ошибаетесь, но вы можете перенаправить stderr и stdout в файл в записи crontab, который может дать вам подсказку. Моя синтаксическая память ржавая, но это что-то вроде
Конечно, это также приводит к еще одной точке отказа, а именно, что у вас нет разрешения на запись, где бы вы ни находились. выкладываю errors.txt. ; -)
Если он работает из вашей учетной записи, но не из cron, это обычно не cron. Демон cron пытается запустить ваше приложение, но, поскольку он не устанавливает переменные среды, он завершится ошибкой. Создайте простой сценарий оболочки, чтобы настроить переменные среды и запустить сценарий python. (У вас нет PATH, поэтому вы должны использовать полные имена путей и т. Д.)
Глядя на ваш сценарий, вы можете довольно легко сделать все это, используя только команды сценария оболочки. Сценарии оболочки сильно недооценены.