私はただ別の世界からunixに飛び込んでいて、
while true
do
/someperlscript.pl
done
perlスクリプト自体には、ターゲットの場所でファイルが変更されたときに実行されるフォルダー/ファイルウォッチャーが内部にあります。
これwhile true
は良いアイデアですか?そうでない場合、好ましい堅牢なアプローチは何ですか?
TIA
編集:これはかなりの関心を生み出したように見えるので、ここに完全なシナリオがあります。perlスクリプト自体は、ファイルウォッチャーを使用してディレクトリを監視します。新しいファイルを受信すると(rsyncを介して到着します)、新しいファイルを取得して処理します。現在、着信ファイルが破損している可能性があり(質問しないでください。ラズベリーパイから来ています)、時にはプロセスがそれを処理できないことがあります。私たちはまだすべてのシナリオを認識していないので、正確な理由はわかりません。
ただし、プロセスが何らかの理由で失敗した場合、次のファイルはエラーを引き起こした可能性のある前のファイルとは完全に無関係であるため、実行して次のファイルを処理する必要があります。
通常、何らかのキャッチオールを使用し、コード全体をラップして、クラッシュしないようにしました。しかし、perlには確信がありませんでした。
私が理解したことから、supervisordのようなものを使用することはこのための良いアプローチです。
inotify
API を確認して、ターゲットディレクトリでファイルが変更されるのを待機するビジーループを回避することができます。