スクリプトを定時実行させたいことがある。 通常はcrontabを使うのだけど、使えない状況も多い。 単にwhileやforでずっとループしていると、 「長時間動いているプロセスはkill!」 という場合もあると思う。 プロセスIDを変化させる為には自分から自分を呼んで制御を映せばいい。 でも、だからといって、単純に自分から自分を呼べばプロセスが開放されずにリソースを食いつぶしてしまう。 で、コレを防ぐには今まではバックグラウンド実行すればいいかなと思っていたのだけど、 サーバ環境によってはプロセスが残ってしまう場合があるみたい。 というわけで、さっき思いついたのだけど、 呼び出しもとのスクリプトをkillしてしまえばどうだろうか? というわけで考えてみた。 意外とうまくいった。 # 自分のPID $pid=$$; # 自分自身 $script="./loop.pl"; # 引数を読み取り