我正在使用 cakephp 2.x 并想在 cron 中执行一个 shell。
我将 shell 作为后台进程运行的目的是生成一个包含大量数据的 XML 文件。
我已在 .bashrc 文件中将 PATH 变量设置为 path/to/app/Console。我还在 /app/Console/cakeshell 中创建了 cakeshell 文件,并使其可执行,如 cakephp 2.x 文档中所述。我还在 /app/Console/Command/myjobShell.php 中创建了我的 shell。
这是cakeshell的代码:
#!/bin/bash
TERM=dumb
export TERM
cmd="cake"
while [ $# -ne 0 ]; do
if [ "$1" = "-cli" ] || [ "$1" = "-console" ]; then
PATH=$PATH:$2
shift
else
cmd="${cmd} $1"
fi
shift
done
$cmd
注意:我已将cmd='cake'
其更改为完整路径cmd='/path/to/app/Console/cake'
我使用的 cron 语法如下:
* * * * * /path/to/cakeshell myjob -cli /usr/bin -console /path/to/app/Console
我已经检查了服务器,cron 恶魔工作正常。但似乎 cakeshell 不起作用。
此外,如果有人有任何直接通过 cron 运行 /controller/action 而不使用 shell 的参考,也可能是一种解决方案。但我不知道这是否可行。