【发布时间】:2012-09-03 17:17:05
【问题描述】:
在 bash 脚本中,我正在使用 wait 等待子进程的 pid。该子进程正在写入日志文件。 bash 脚本中有没有办法在等待进程完成的同时将该日志文件尾随到标准输出?
【问题讨论】:
标签: bash
在 bash 脚本中,我正在使用 wait 等待子进程的 pid。该子进程正在写入日志文件。 bash 脚本中有没有办法在等待进程完成的同时将该日志文件尾随到标准输出?
【问题讨论】:
标签: bash
在后台运行猫:
cmd-that-logs-to-file &
pid=$!
cat file &
wait $pid
kill $! # Kill the cat
【讨论】:
pid=$!之前和cmd-that-logs-to-file &之后启动了一些其他后台进程怎么办?
$! 给出了最近的后台进程的 id,它可能是别的东西。
在等待命令完成时,使用tail 命令跟踪文件。
command &
cmdpid=$!
tail -f -n +0 logfile &
wait $cmdpid
kill $!
这在本质上类似于 William 的解决方案,但有一个重要区别:如果 command 的完成时间比 cat 打印文件的时间长,它将正确打印日志文件(很可能,因为cat 非常快)。 -n +0 选项告诉tail 在开始更新之前打印整个文件。
【讨论】:
这使它更简单:
command &
pid=$!
tail --pid=$pid -f /path/to/log
【讨论】: