我需要這個cron作業來執行我的shell,就像它在命令行上運行一樣。在Ubuntu上使用Cron和Cake Console
我閱讀了另一個關於此問題的問題,但是我的基於控制檯的cron作業仍然無法正常工作。我想發佈一些代碼和它輸出的內容,也許有人會告訴我發生了什麼事情。
首先,這是在Cake 1.3上。我在Ubuntu 9.10上運行。我嘗試了Cake Book中描述的shell-script method。
我還沒有建立任何特殊的用戶帳戶來運行腳本。蛋糕控制檯在我的PATH上(對於Ubuntu內置用戶)。
在another question I found中,他們報告-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
從這個輸出看起來像:
Welcome to CakePHP v1.3.2 Console
---------------------------------------------------------------
App : app
Path: /var/www/www.directory.sdcweb.org/htdocs/app
---------------------------------------------------------------
我記錄我的cron作業輸出一個文件和輸出看起來不同,像這樣:
編輯:我注意到,這下面的代碼塊只是CakePHP的蛋糕shell腳本,如果你打開蛋糕/控制檯/ cak在文本編輯器中,您應該找到以下腳本。
################################################################################
#
# 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}" "[email protected]"
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
這是什麼問題? – 2010-07-16 21:25:40
我不明白爲什麼從cron-job運行我的shell不像我在命令行上運行它時那樣工作。查看我帖子中的第一個代碼片段。 – the0ther 2010-07-16 21:44:07