私はこのコマンドを実行しています:
tail -f rest.log | while read
LOGLINE
do
[[ "${LOGLINE}" == *"Finished building"* ]] && pkill -P $$ tail
done
ファイルに「Build Completed」という文字列が表示されるまで、ログファイルを読み込みます。その場合、tail
コマンドは終了します。文字列がまったく表示されない場合もあります。この場合、しばらくしてループを終了したいと思います。若干のタイムアウトが発生しました。 5分後に文字列検索を停止する必要があるとします。この目標をどのように達成できますか?最初のコマンドの前にタイムアウトを試しましたが、うまくいきませんtail
でした。
答え1
これを試してみてください:read
タイムアウトオプションが組み込まれています-t
!
while read -t 10 LOGLINE
do
[[ "${LOGLINE}" == *"Finished building"* ]] && pkill -P $$ tail
done
上記の10 seconds
。で必要な時間制限を参照してくださいseconds
。その他の参考資料man read
read [-ers] [-a aname] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [name ...]
答え2
別のオプションは、他のスクリプトでwhileループでtimeoutコマンドを使用することです。
timeout 300 script_that_searches_for_finished_build.sh
スクリプトは5分間実行された後に停止します。