Мне нужно, чтобы эта задача cron выполняла мою оболочку так же, как и при запуске ее из командной строки.
Я прочитал еще один вопрос, который нашел по этому поводу, но моя консольная работа cron все еще не работает. Я хочу опубликовать некоторый код и что он выводит, может быть, кто-то может сказать мне, что происходит.
Во-первых, это на Cake 1.3. Я работаю на Ubuntu 9.10. Я попробовал метод сценария оболочки , описанный в Cake Book.
Я НЕ создал никакой специальной учетной записи для запуска скрипта. Консоль Cake находится у меня в PATH (для встроенного пользователя Ubuntu).
В другом вопросе, который я нашел , они сообщают, что параметр -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-job в файл, и выходные данные выглядят иначе, например:
РЕДАКТИРОВАТЬ: я заметил, что следующий блок кода является просто сценарий оболочки оболочки, который поставляется с CakePHP, если вы откроете торт / консоль / торт в текстовом редакторе, вы должны найти следующий сценарий.
################################################################################
#
# 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