我需要这个 cron 作业来执行我的 shell,就像我在命令行上运行它时一样。
我通读了我发现的另一个问题,但我基于控制台的 cron 工作仍然无法正常工作。我想发布一些代码及其输出,也许有人可以告诉我发生了什么。
首先,这是在 Cake 1.3 上。我在 Ubuntu 9.10 上运行。我已经尝试过Cake Book 中描述的shell-script 方法。
我没有建立任何特殊的用户帐户来运行脚本。蛋糕控制台在我的 PATH 上(对于 ubuntu 内置用户)。
在我发现的另一个问题中,他们报告 -app 参数没有做任何事情。这对我来说似乎也是如此。
当我从命令行运行它时,我的 shell 可以正常工作:
./vendors/cakeshell subscription_reminder -cli /usr/bin -app /var/www/www.example.org/htdocs/app -console /var/www/www.example.org/htdocs/cake/console/cake
这个输出看起来像:
Welcome to CakePHP v1.3.2 Console
---------------------------------------------------------------
App : app
Path: /var/www/www.directory.sdcweb.org/htdocs/app
---------------------------------------------------------------
我正在将我的 cron-job 输出记录到一个文件中,并且该文件的输出看起来不同,如下所示:
编辑:我注意到以下代码块只是 CakePHP 附带的 cake shell 脚本,如果您在文本编辑器中打开 cake/console/cake,您应该会找到以下脚本。
################################################################################
#
# Bake is a shell script for running CakePHP bake script
# PHP versions 4 and 5
#
# CakePHP(tm) : Rapid Development Framework (http://cakephp.org)
# Copyright 2005-2010, Cake Software Foundation, Inc.
#
# Licensed under The MIT License
# Redistributions of files must retain the above copyright notice.
#
# @copyright Copyright 2005-2010, Cake Software Foundation, Inc.
# @link http://cakephp.org CakePHP(tm) Project
# @package cake
# @subpackage cake.cake.console
# @since CakePHP(tm) v 1.2.0.5012
# @license MIT License (http://www.opensource.org/licenses/mit-license.php)
#
################################################################################
LIB=${0/%cake/}
APP=`pwd`
exec php -q ${LIB}cake.php -working "${APP}" "$@"
exit;
我的 crontab 看起来像这样:
41 20 * * * /var/www/www.example.org/htdocs/app/vendors/cakeshell subscription_reminder -cli /usr/bin -app /var/www/www.example.org/htdocs/app -console /var/www/www.example.org/htdocs/cake/console/cake >> /home/ubuntu/cron-log