Ich benötige diesen Cron-Job, um mein Shell-Skript auszuführen, genauso wie es funktioniert, wenn ich es in der Befehlszeile ausführe.
Ich habe die eine andere Frage zu diesem Thema durchgelesen, aber mein konsolenbasiertes Cron-Job funktioniert immer noch nicht. Ich möchte etwas Code und die Ausgabe posten, vielleicht kann mir jemand sagen, was los ist.
Zunächst einmal, dies läuft auf Cake 1.3. Ich verwende Ubuntu 9.10. Ich habe die Shell-Skript-Methode aus dem Cake-Buch ausprobiert.
Ich habe kein spezielles Benutzerkonto für das Ausführen des Skripts eingerichtet. Die Cake-Konsole ist in meinem PATH (für den im Ubuntu eingebauten Benutzer).
In einer anderen Frage, die ich gefunden habe, wird berichtet, dass der -app Parameter nichts bewirkt. Bei mir scheint dies auch der Fall zu sein.
Meine Shell funktioniert so, wie sie sollte, wenn ich das von der Befehlszeile ausführe:
./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
Die Ausgabe sieht dann so aus:
Willkommen bei CakePHP v1.3.2 Konsole
---------------------------------------------------------------
App : app
Pfad: /var/www/www.directory.sdcweb.org/htdocs/app
---------------------------------------------------------------
Ich protokolliere die Ausgabe meines Cron-Jobs in eine Datei und die Ausgabe davon sieht anders aus, so:
Bearbeitung: Mir ist aufgefallen, dass dieser folgende Codeblock einfach das Cake Shell-Skript ist, das mit CakePHP geliefert wird. Wenn Sie cake/console/cake in einem Texteditor öffnen, sollten Sie das folgende Skript finden.
################################################################################
#
# 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;
Mein Crontab sieht so aus:
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
0 Stimmen
Ich verstehe nicht, warum das Ausführen meiner Shell von einem Cron-Job aus nicht funktioniert, wie es funktioniert, wenn ich es auf der Befehlszeile ausführe. Siehe das erste Code-Snippet in meinem Beitrag.