web-dev-qa-db-ja.com

すでに実行されている場合はcronジョブを実行しないでください

この質問はすでに行われていることは知っていますが、答えがわからなかったか、当てはまりませんでした。

CPanelを使用してCronジョブを設定するために1分ごとに呼び出すphpスクリプトがあります。スクリプトの性質上、1分強でオーバーランする可能性があるため、最初のスクリプトが完了していない場合に次のスクリプトの実行を停止する方法を知る必要があります。

CENTOS 5.5を実行しているVPSがあり、WHMとCPanelにアクセスできます。私はこれまでLinuxを使用したことがないので(昨日サーバーを入手したばかりです)、何をしているのかわかりません。可能であれば、助けていただければ幸いです。さらに情報を提供する必要がある場合は、お知らせください(現時点で必要な情報はわかりません)。

ありがとう。

4
webnoob

プロセス管理 を参照してください。おそらくロックファイルを使用することをお勧めします。たとえば、 flock を使用できます。

なぜあなたはあなたの仕事を完了させることができないのですか?

あなたの質問は「私は答えを理解しなかったか、それは私に当てはまらなかった」と言っていますが、あなたはどのように言っていません。具体的にお願いします。

Cronジョブとしてbashスクリプトを使用します

cron.sh

#!/bin/bash
$lockfile=/tmp/lock.file

if [ ! -e $lockfile ]; then
   touch $lockfile
   php /path/to/php/script.php
   rm $lockfile
else
   echo "script already running"
fi
5
pablo

Psで何かを実装することで問題が解決するかどうか興味があります。簡単だろうps -e | grep script_name.php | awk '{print $4}'十分ですか?スクリプトが実行されているかどうかは間違いなくわかります。誰かが事前にスクリプトを強制終了したかどうかを確認する必要はありません。ロックファイルの作成と削除は、これよりも優れている/高速ですか?

よくわかりません。長所と短所を知りたいだけです。ありがとう

0
grs