【发布时间】:2011-09-14 15:02:28
【问题描述】:
我一直试图让 crontab 工作一段时间,但它似乎不想工作。我需要在每个午夜初始化的 python 脚本在命令终端上完美运行。我的python脚本的位置是:
/home/rv/ncbi-blast-2.2.23+/database_backup/backup.py
我的 contab 如下所示:
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 守护进程正在运行吗?
-
您的 crontab PATH 不包括
/usr/local/bin。但是你的 python shebang 行引用了/usr/local/bin/python。或许将/usr/local/bin添加到 crontab PATH,和/或显式调用脚本:0 0 * * * /usr/local/bin/python /home/rv/ncbi-blast-2.2.23+/database_backup/backup.py -
"-p*****"应该是'-p', '*****', -
如果它以 root 身份运行,cwd 将是 /,如果可以的话,你会在那里写你的文件。还要检查您的本地邮件,如果有的话,cron 应该将输出邮寄给您,例如当事情失败时。
-
脚本有执行权限吗?您是通过 crontab 命令还是使用编辑器编辑了 crontab(不要这样做)?