2

5分ごとに実行する次のcronジョブを作成しましたが、何らかの理由で実行されません。

*/05 * * * * ~/webapps/django/shop/update

シェルからスクリプトを実行しようとすると、完全に実行されます。スクリプトの内容(カスタムdjangoコマンドを実行しようとしています)は次のとおりです。

python2.7 manage.py updateTime

何が間違っている可能性があるかについてのアイデアはありますか?

ありがとう。

編集:

シェル環境変数:

BASH=/bin/bash
BASH_ARGC=()
BASH_ARGV=()
BASH_LINENO=()
BASH_SOURCE=()
BASH_VERSINFO=([0]="3" [1]="2" [2]="25" [3]="1" [4]="release" [5]="i686-redhat-linux-gnu")
BASH_VERSION='3.2.25(1)-release'
COLORS=/etc/DIR_COLORS.xterm
COLUMNS=157
CVS_RSH=ssh
DIRSTACK=()
EDITOR=emacs
EUID=629
GROUPS=()
G_BROKEN_FILENAMES=1
HISTFILE=/home/shopperspoll/.bash_history
HISTFILESIZE=1000
HISTSIZE=1000
HISTTIMEFORMAT='%F %T '
HOME=/home/shopperspoll
HOSTNAME=web192.webfaction.com
HOSTTYPE=i686
IFS=$' \t\n'
INPUTRC=/etc/inputrc
LANG=en_US.UTF-8
LESSOPEN='|/usr/bin/lesspipe.sh %s'
LINES=46
LOGNAME=shopperspoll
LS_COLORS='no=00:fi=00:di=00;34:ln=00;36:pi=40;33:so=00;35:bd=40;33;01:cd=40;33;01:or=01;05;37;41:mi=01;05;37;41:ex=00;32:*.cmd=00;32:*.exe=00;32:*.com=00;32:*.btm=00;32:*.bat=00;32:*.sh=00;32:*.csh=00;32:*.tar=00;31:*.tgz=00;31:*.arj=00;31:*.taz=00;31:*.lzh=00;31:*.zip=00;31:*.z=00;31:*.Z=00;31:*.gz=00;31:*.bz2=00;31:*.bz=00;31:*.tz=00;31:*.rpm=00;31:*.cpio=00;31:*.jpg=00;35:*.gif=00;35:*.bmp=00;35:*.xbm=00;35:*.xpm=00;35:*.png=00;35:*.tif=00;35:'
MACHTYPE=i686-redhat-linux-gnu
MAIL=/var/spool/mail/shopperspoll
MAILCHECK=60
OLDPWD=/home/shopperspoll
OPTERR=1
OPTIND=1
OSTYPE=linux-gnu
PATH=/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/shopperspoll/bin
PIPESTATUS=([0]="0")
PPID=18520
PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME%%.*}:${PWD/#$HOME/~}"; echo -ne "\007"'
PS1='[\u@\h \W]\$ '
PS2='> '
PS4='+ '
PWD=/home/shopperspoll
SHELL=/bin/bash
SHELLOPTS=braceexpand:emacs:hashall:histexpand:history:interactive-comments:monitor
SHLVL=1
SSH_CLIENT='99.65.178.55 59982 22'
SSH_CONNECTION='99.65.178.55 59982 174.133.20.142 22'
SSH_TTY=/dev/pts/11
TERM=xterm
UID=629
USER=shopperspoll
_=test
consoletype=pty
tmpid=629

cron環境変数:

BASH=/bin/sh
BASH_ARGC=()
BASH_ARGV=()
BASH_EXECUTION_STRING='set >/home/shopperspoll/test'
BASH_LINENO=()
BASH_SOURCE=()
BASH_VERSINFO=([0]="3" [1]="2" [2]="25" [3]="1" [4]="release" [5]="i686-redhat-linux-gnu")
BASH_VERSION='3.2.25(1)-release'
DIRSTACK=()
EUID=629
GROUPS=()
HOME=/home/shopperspoll
HOSTNAME=web192.webfaction.com
HOSTTYPE=i686
IFS='
'
LOGNAME=shopperspoll
MACHTYPE=i686-redhat-linux-gnu
OPTERR=1
OPTIND=1
OSTYPE=linux-gnu
PATH=/usr/bin:/bin
POSIXLY_CORRECT=y
PPID=24949
PS4='+ '
PWD=/home/shopperspoll
SHELL=/bin/sh
SHELLOPTS=braceexpand:hashall:interactive-comments:posix
SHLVL=1
TERM=dumb
UID=629
USER=shopperspoll
_=/bin/sh
4

3 に答える 3

4

最初の最初のステップ:cronエントリを次のように置き換えます。

*/05 * * * * date >/tmp/qqdate

作成/更新されることを確認して、実際に実行されていることを確認しますqqdate

次に、updateスクリプトへの完全なパス名(~文字なし)を使用してみてください。チルダは、によって理解されない可能性のあるシェルのものですcron

cronそれを超えて、シェルからは機能するが内部では機能しないほとんどの問題cronは、通常、cronジョブが取得する大幅に最小化された環境に関係しています。

シェルでaを実行し、setcronjobを使用してaを実行し、違いを見つけます。cronjobに重要な環境変数がない可能性があります。


私が通常行うことは、そのシェル変数ファイルを(からset >shellvarfile)取得し、すべての行の前にエクスポートを配置. /path/to/shellvarfileし、cronjobスクリプトから(を使用して)ソースすることです。それで問題が解決すれば、それは環境問題であり、再び壊れるまでそれらの行を1つずつコメントアウトする必要があることを私は知っています。最後にコメントアウトするのは必要なものなので、コメントを外してマークを付けます。次に、できるだけ多くのコメントが出るまで続けます。

それが失敗した場合は、なぜ失敗したのかを解明してみてください。cronjobを次のようなものに変更します。

*/05 * * * * /path/to/webapps/django/shop/update >/tmp/debug 2>&1

次に、ファイルが実行されるのを待ち、そのファイルの内容に手がかりがないか確認します。cronジョブが実行されていると仮定すると(あなたが言っているように)、これは出力をキャプチャし、うまくいけば問題が何であるかを示すはずです。そのファイルの内容を必ず投稿してください。

于 2011-05-20T07:59:15.947 に答える
2

これらすべてのコメントを読む必要なしにスピードアップするだけです。私は同じ問題に直面していました。それは、cronjobがPython実行可能ファイルを見つけられなかったということです。だから私はそれを探しました:

whereis python2.7

場所を使用して、crontabを編集しました。

crontab -e

そして最後に、私のタスクは次のようになりました。

0 */6 * * * /usr/local/bin/python2.7 ~/webapps/proj/app/manage.py poll_twitter

今では魅力のように機能します。

于 2013-01-02T21:37:10.150 に答える
1

sriptのロジックによると、manage.pyはcronを実行しているユーザーのホームディレクトリにあります。これが本当だとは思えません。

次のようにcronタスクを調整します。

*/05 * * * * python2.7 /absolute/path/to/manage.py updateTime

これで問題が解決するはずです。

于 2011-05-20T12:39:54.923 に答える