Cakephp 2.x を使用しており、cron でシェルを実行したいと考えています。
シェルをバックグラウンド プロセスとして実行する目的は、多数のデータを含む XML ファイルを生成することです。
.bashrc ファイルで PATH 変数を path/to/app/Console に設定しました。また、/app/Console/cakeshell に cakeshell ファイルを作成し、cakephp 2.x のドキュメントで説明されているように実行可能にしました。また、/app/Console/Command/myjobShell.php 内にシェルを作成しました。
ケーキシェルのコードは次のとおりです。
#!/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 デーモンが正常に動作していることをサーバーで確認しました。しかし、ケーキシェルが機能していないようです。
また、シェルを使用せずに cron を介して直接 /controller/action を実行することについて誰かが言及している場合も、解決策になる可能性があります。しかし、それが実現可能かどうかはわかりません。