-1

メンテナンスを実行する 10 分ごとに php スクリプトを呼び出す単純な bash スクリプトがあります。このphpスクリプトは実行中に時々終了し、これが発生するとbashスクリプトが終了します。

PHPスクリプトが失敗してもbashスクリプトがループし続けるようにしたいです。誰かが私を正しい方向に向けることができますか? しばらく検索しましたが、答えが見つからないようです。おそらく、正しい検索用語を使用していない可能性があります。

#!/bin/sh
set -e    
while :    
do    
    /usr/bin/php /path/to/maintenance/script.php
    sleep 600    
done
4

2 に答える 2

2

Rjz のコメントは正しいです。使用する必要がありますcron。これを行うには、次の行を実行crontab -eして追加します。

*/10 * * * * /usr/bin/php /path/to/maintenance/script.php

適切に設定されている場合はcron、出力 (エラー メッセージを含む) が電子メールで送信されます。

于 2012-04-06T02:39:47.797 に答える
1

set -e

行は、シェルの「エラー時に終了」フラグを設定します。これは、実行するプログラムがゼロ以外のステータスで終了する場合、シェルも終了する必要があることを通知します。

set -e
false
echo if this prints, your shell is not honoring "set -e"

もちろん、ステータスがテストされているプログラムには例外があります。

set -e
if prog; then
    echo program succeeded
else
    echo program failed
fi
echo this will still print

正しく動作します (いずれかのエコーが発生し、最後のエコーも同様に発生します)。

/bin/sh非 POSIX で Bournegol で書かれていた Dim Time に戻ると、 のいくつかのバージョンにバグがあり、式shが壊れていました。||

set -e
false || true
echo if this prints, your shell is OK

(論理バグは&&式にも内部的に適用されましたが、それ自体が false であるため、式全体がとにかく失敗することを意味するため、そこでは無害でしfalse && anythingた!) それ以来、私は "-e" に警戒してきました。

于 2012-04-27T05:05:10.857 に答える