web-dev-qa-db-ja.com

特定の時間の「tail -f」

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

24
Tuyen Pham

GNUタイムアウト:

timeout 20 tail -f /path/to/file
55
cuonglm

完全を期すために、timeoutなしで、これを行うことができます:

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

trap行は、スクリプトまたは親シェルが終了したときに(スクリプトの終わり(EXIT)、Ctrl-C(INT)に到達し、killを介してSIGTERMを送信し、シェル(HUP)など)、tailが強制終了されます。

19
Chris J