gpt4 book ai didi

cakephp - 在 Ubuntu 上使用 Cron 和 Cake Console

转载 作者:行者123 更新时间:2023-12-04 06:49:58 25 4
gpt4 key购买 nike

我需要这个 cron 作业来执行我的 shell,就像我在命令行上运行它时一样。

我通读了我发现的另一个问题,但我基于控制台的 cron 工作仍然无法正常工作。我想发布一些代码及其输出,也许有人可以告诉我发生了什么。

首先,这是在 Cake 1.3 上。我在 Ubuntu 9.10 上运行。我试过shell-script method蛋糕书中描述的。

我没有建立任何特殊的用户帐户来运行脚本。蛋糕控制台在我的 PATH 上(对于 ubuntu 内置用户)。

another question I found ,他们报告 -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

最佳答案

首先,您的 cronjob 使用不同的 cwd 运行脚本,这可能会影响行为。将其更改为

41 20 * * * cd /var/www/www.example.org/htdocs/app/; ./vendors/cakeshell ....

但也许还有别的东西:

“cakephp 控制台” cakeshell 可能会检查它的标准输入是否连接到 tty。如果没有,它会进入其他一些非交互模式。

关键是某些程序可以在终端(tty)中与您交谈,而其他程序则不能。

有些人可以两者兼得,视情况而定。
grep通常是非交互式的
vi , piconano通常仅以交互方式使用:
$ vi > test3
Vim: Warning: Output is not to a terminal
$ echo bla | vi
Vim: Warning: Input is not from a terminal
$ vi < test3
Vim: Warning: Input is not from a terminal
bash两者都可以(运行脚本时非交互,在终端中为您服务时交互)

所以至少有一个答案,为什么完全相同的命令和环境可以给出完全不同的输出。尝试像您一样从命令行启动它,但从管道或文件重定向输入,然后查看发生了什么变化。

关于cakephp - 在 Ubuntu 上使用 Cron 和 Cake Console,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3268927/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com