【发布时间】:2010-12-11 18:44:36
【问题描述】:
我正在尝试在 Bash 中实现一个简单的日志服务器。它应该将一个文件作为参数并使用 netcat 在端口上提供它。
( tail -f $1 & ) | nc -l -p 9977
但问题是当 netcat 终止时,tail 仍然在运行。 (澄清:如果我不分叉尾部进程,即使 netcat 终止,它也会继续永远运行。)
如果我以某种方式知道尾巴的 PID,那么我可以在之后杀死它。
显然,使用 $!将返回 netcat 的 PID。
如何获取尾部进程的PID?
【问题讨论】:
-
如果不使用
&会怎样?tail -f应该在那里等着。我不明白&的用途,尽管它看起来确实是更大脚本的一部分。无论如何,如果你杀死管道,我会认为尾巴会死(只要你没有背景它)。 -
根据我对 shell 的理解,& 在这种情况下,其含义是“从背景开始”。至少,这是我现在看到的行为,试图将解决方案应用于我自己的类似问题。