ログファイルに対してtail -f
を実行する必要がありますが、特定の時間(たとえば20秒)だけ実行してから終了します。これを達成するためのエレガントな方法は何でしょうか?
GNUタイムアウト:
timeout 20 tail -f /path/to/file
完全を期すために、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
が強制終了されます。