!['tail -f' 一段特定的时间](https://linux22.com/image/11034/'tail%20-f'%20%E4%B8%80%E6%AE%B5%E7%89%B9%E5%AE%9A%E7%9A%84%E6%97%B6%E9%97%B4.png)
我需要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
被终止。