ログファイルに対して実行する必要があります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
終了しました。