Bash 和 cron 错误

Bash 和 cron 错误

以下 cron 作业无法执行。它出了什么问题?当我直接从 shell 提示符运行它时,它工作正常。

www-data@etl:~$ crontab -l
SHELL=/bin/bash
MAITO=""

0 5 * * *   export YESTERDAY=$(date --date "yesterday" "+%Y-%m-%d"); cd /var/www/project && source .env/bin/activate && ./manage.py get_orders --date="$YESTERDAY" && sleep 5m && time ./manage.py merch --date="$YESTERDAY" && time ./manage.py order_flat_report --date="$YESTERDAY" && time ./manage.py update_hourly_report --date="$YESTERDAY"

我收到此错误信息:

Return-Path: <www-data@etl>
X-Original-To: www-data
Delivered-To: www-data@etl
Received: by localhost (Postfix, from userid 33)
    id E170C43EC7; Fri, 18 Apr 2014 05:00:01 -0400 (EDT)
From: root@etl (Cron Daemon)
To: www-data@etl
Subject: Cron <www-data@etl> export YESTERDAY=$(date --date "yesterday" "+
Content-Type: text/plain; charset=ANSI_X3.4-1968
X-Cron-Env: <SHELL=/bin/bash>
X-Cron-Env: <MAITO=>
X-Cron-Env: <HOME=/var/www>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=www-data>
Message-Id: <20140418090001.E170C43EC7@localhost>
Date: Fri, 18 Apr 2014 05:00:01 -0400 (EDT)

/bin/bash: -c: line 0: unexpected EOF while looking for matching `"'
/bin/bash: -c: line 1: syntax error: unexpected end of file
  • Ubuntu 13.10(GNU/Linux 3.11.0-14-通用 x86_64)
  • GNU bash,版本 4.2.45(1)-发布(x86_64-pc-linux-gnu)

答案1

看起来 cron 在将命令传递给 bash 时没有正确转义命令中的某些引号。正如 Florin 所建议的,您可以将命令放入 shell 脚本中,使其可执行,将其存储在例如 中/usr/local/bin,然后将其作为 cronjob 运行。

如果作业是否准时在 05:00 运行并不重要,您也可以将脚本放入其中/etc/cron.daily/,从而无需从 crontab 调用它。

相关内容