我需要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
行确保当脚本或父 shell 终止时(我们到达脚本末尾 (EXIT)、Ctrl-C (INT)、通过 发送 SIGTERM kill
、注销 shell (HUP) 等),则脚本或父 shelltail
被终止。