特定の期間に 'tail -f' [繰り返し]

特定の期間に 'tail -f' [繰り返し]

ログファイルに対して実行する必要がありますtail -fが、特定の時間(例:20秒)だけ実行してから終了する必要があります。これを達成するためのエレガントな方法は何ですか?

答え1

GNUタイムアウトの使用:

timeout 20 tail -f /path/to/file

答え2

完璧にするためにそうでない場合は、timeout次のことができます。

#!/bin/sh
tail -f /var/log/syslog &
me=$!
trap "kill $me" INT TERM HUP QUIT EXIT
sleep 20

このtrap行は、スクリプトまたは親シェルが終了したとき(スクリプトの終わりに到達(EXIT)、Ctrl-C(INT)、SIGTERM転送kill、シェルログアウト(HUP)など)、スクリプトまたは親シェルがtail終了しました。

関連情報