GNU/Linux >> Linux の 問題 >  >> Linux

PHPスクリプトが実行されているかどうかを確認するためのcronジョブ、実行されていない場合は実行しますか?

誰かが私を正しい方向に向けてくれるのではないかと思います。 Linuxコマンドラインでの作業経験はほとんどありませんが、最近、さまざまな要因により、知識を習得する必要がありました。

基本的に私は2つのphpを持っています サーバー上のディレクトリにあるスクリプト。アプリケーションの目的上、これらのスクリプトは継続的に実行されている必要があります。現在、私はそれを次のように実装しています:

nohup sh -c 'while true; do php get_tweets.php; done' >/dev/null &

および

nohup sh -c 'while true; do php parse_tweets.php; done' >/dev/null &

ただし、無限ループにもかかわらず、スクリプトが定期的に停止し、再起動する必要があることに気付きました。理由はわかりませんが、そうです。そのため、CRONの見通しを検討しました。 実行されているかどうかを確認し、実行されていない場合は実行/再起動するジョブ。

誰かがこれをどうやって行うかについての情報を私に提供することができますか?

承認された回答:

あなたはcronジョブの概念に慣れていないので、Davidannの答えを拡張したいと思います。すべてのUNIXまたはLinuxシステムには、どこかにcrontabが格納されています。 crontabはプレーンテキストファイルです。次のことを考慮してください:(CronのGentooWikiから)

#Mins  Hours  Days   Months  Day of the week
10     3      1      1       *       /bin/echo "I don't really like cron"
30     16     *      1,2     *       /bin/echo "I like cron a little"
*      *      *      1-12/2  *       /bin/echo "I really like cron"

このcrontabは、隔月の毎日の
時間ごとに「Ireallylikecron」をエコーする必要があります。明らかに、あなたが本当にcronが好きなら、あなたはそれを
するでしょう。 crontabは、1月と2月の毎日16:30に「crona
little」もエコーします。また、1月1日の3:10に
「cronはあまり好きではありません」とエコーします。

cronを初めて使用する場合は、スター付きの列にコメントを付けて、各列が何に使用されているかを把握することをお勧めします。私が知っているすべてのCron実装は、常にこの順序でした。 Davidannの回答をコメントファイルとマージします:

#Mins  Hours  Days   Months  Day of week
  *     *      *      *       *   lockfile -r 0 /tmp/the.lock && php parse_tweets.php; rm -f /tmp/the.lock

* * * * * lockfile -r 0 /tmp/the.lock &&php get_tweets.php; rm -f /tmp/the.lock

各列に値を入力しない場合、デフォルトは次のようになります。
1週間中、毎月、毎日、毎時、毎分、–>一年中毎分。

関連:Linux – Linuxのある「フレーバー」でコンパイルされたLinux実行可能ファイルは別のフレーバーで実行されますか?

Davidannがロックファイルを使用すると、phpインタープリターのコピーが1つだけ実行されるようになると述べているように、php parse_tweets.php はファイルを「実行」するコマンドであり、行の最後のビットはロックファイルを削除して次の実行の準備をします。毎分ファイルを削除するのは好きではありませんが、これが必要な動作である場合、これは非常に受け入れられます。ディスクへの書き込みと書き換えは個人的な好みです


Linux
  1. PHPスクリプトを実行するためのGodaddy cronジョブのセットアップ

  2. Linux で 6 時間ごとに cron ジョブを実行する

  3. シェル スクリプトが実行されているかどうかを確認する Linux コマンド

  1. CronJob が実行されていません

  2. LinuxでCRONジョブを10秒ごとに実行するように設定するには?

  3. 既に実行されている場合は cron ジョブを実行しない

  1. cron ジョブがまだ実行されていない場合にのみ実行する

  2. 1 時間ごとに実行可能ファイルを実行するように cron ジョブを設定する方法は?

  3. シェルスクリプトの並列実行