5

私はしばらくの間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)

シェルスクリプトでも試したときに同じエラーが発生しました

4

4 に答える 4

1

crontab cmdを確認して、それらのcmdを手動で実行できます。

/usr/bin/scrond run-parts /etc/cron.daily
于 2011-09-14T07:02:28.513 に答える
1

ユーザーアカウントからは機能するが、cron からは機能しない場合、通常は cron ではありません。cron デーモンはアプリケーションを起動しようとしますが、環境変数を設定しないため失敗します。環境変数をセットアップするための簡単なシェル スクリプトを作成し、Python スクリプトを起動します。(PATH がないため、フルパス名などを使用する必要があります。)

スクリプトを見ると、シェル スクリプト コマンドだけを使用して、これらすべてを非常に簡単に実行できます。シェル スクリプトは非常に過小評価されています。

于 2010-06-22T17:20:14.683 に答える
1

おそらく、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 
于 2010-06-22T17:24:23.887 に答える
0

どこで間違っているのかわかりませんが、stderr と stdout を crontab エントリのファイルにリダイレクトすると、ヒントが得られる可能性があります。私の構文記憶は錆びていますが、それは次のようなものです<yourfile>.py &> errors.txt

もちろん、これは別の障害点ももたらします。それは、errors.txt を配置する場所に書き込む権限がないことです。;-)

于 2010-06-22T17:12:36.940 に答える