※ ChatGPTを利用し、要約された質問です(原文:n秒毎に処理を繰り返す方法)
n秒毎の処理を繰り返す方法とは?
このQ&Aのポイント
n秒毎に処理を繰り返す方法について教えてください。
あるコマンドの実行結果を、5秒ごとのファイルに出力したい場合、無限ループのシェルスクリプトを作成し、コマンド実行とsleepコマンドを組み合わせることで実現できます。
しかし、この方法では実行時間によって正確な5秒ごとに処理が行われない場合があります。解決策としては、コマンドの実行結果を取得した後に正確な待ち時間を計算し、その時間だけ処理を停止する方法があります。
例えばあるコマンドの実行結果を、5秒毎のファイルに出力させたいと思い、
以下のようなシェルを作ったとします。
(例のため、あえて無限ループとしています)
---------[test.sh]---------
#!/bin/sh
while :
do
command >> tmp.out
sleep 5
done
exit
---------------------------
この場合、
"5秒毎"
ではなく、
"commandが終了してから5秒後に処理を繰り返す"
になってしまい、commandにかかる処理時間も含めると正確に5秒おきではなくなってしまいます。
コレを回避する方法はありますでしょうか?
例えばcommandの処理時間が1~2秒程度かかっても、正確に"5秒おき"にcommandを走らせたいです。
もう少し補足すると、
5秒毎に720回処理を繰り返すスクリプトを、1時間おきに起動するようにcron登録して、
起動後、55分55秒で終了、という動きを想定しています。
宜しくお願い致します。
お礼
うまくいきました! どこまで正確かはわかりませんが、「5秒毎に720回処理」程度であれば問題なさそうです。 助かりました。 ありがとうございます。