如何让tail -f mylog.csv命令仅运行指定时长(如60秒)
解决方案:让
tail -f运行指定时长并实时记录日志 正确用法1:使用timeout命令
你之前的timeout命令写法错误,正确语法是将目标命令直接作为timeout的参数,这样它会启动目标命令并在指定时长后自动终止,实现实时捕获日志:
timeout 60s tail -f mylog.csv
如果需要把日志保存到文件而非仅输出到终端,添加重定向即可:
timeout 60s tail -f mylog.csv > collected_logs.txt
正确用法2:后台进程+定时终止(兼容无timeout的环境)
如果你的系统没有timeout命令,可以用后台运行tail并定时杀死进程的方式实现:
# 后台启动tail并将日志写入文件 tail -f mylog.csv > collected_logs.txt & # 获取后台tail进程的PID TAIL_PID=$! # 等待60秒 sleep 60s # 终止tail进程 kill $TAIL_PID
说明你之前的错误
(sleep 60s; tail -f mylog.csv)是先执行sleep等待60秒,之后才启动tail,自然不会记录前60秒的日志。(timeout 60s; tail -f mylog.csv)用分号分隔命令,timeout执行完毕(未对任何命令生效)后才启动tail,完全没起到定时终止的作用。
内容的提问来源于stack exchange,提问作者Coder
相关产品推荐
相关产品推荐

