Cronの操作に問題があります。デフォルトでは、サーバー上で継続的に実行したい2つのPHPスクリプトがあります。現在私が使用している制限なしループは続行されますが、ランダムな時間に止まるようです。
理想的には、スクリプトが実行中であることを確認し、そうでなければ起動するスクリプトを作成したいと思います。
どうすればいいのか知りたいです。
答え1
あなたが望むのは、cronタスクではなくデーモンプロセスです。cron ジョブは特定のジョブを実行するために使用されます。定期的に(または起動時)、いいえプロセスをアクティブに保つために使用されます。この記事を読んで、次のように非常に簡単な作業を実行してください。
#!/bin/sh
while true
do
/my/script.php >> /var/log/my_script.log 2>&1
done
答え2
実行中のプロセスを確認するには、実行中のすべてのプロセスを一覧表示し(psを使用)、grepを使用して探しているプロセスをフィルタリングできます。
ps aux | grep YOUR_PHP_COMMAND
コマンドが実行されていない場合にのみコマンドを開始するには、次のスクリプトを使用できます。
CMD="/bin/sleep 3" # replace it with your command
if ! ps x|grep -v grep|grep "$CMD"; then
$CMD
fi
注:「grep -v grep」を使用して、プロセスリストからgrepプロセスを除外する必要があります。
CRON JOBに入れるには、 'を使用して1行にまとめることができます。;'
CMD="/bin/sleep 3" ; if ! ps aux|grep -v grep|grep "$CMD"; then $CMD ; fi
CRON作業は作業を整理するのに適していることを覚えておいてください。プログラムを実行し続けたい場合は、無限に繰り返し、プログラムが終了するたびにプログラムを起動する方が良い方法です。