我正在尝试在 Bash 中实现一个简单的日志服务器。它应该将文件作为参数,并使用 netcat 在端口上提供它。
( tail -f $1 & ) | nc -l -p 9977
但问题是当 netcat 终止时,tail 仍然在运行。 (澄清:如果我不 fork tail 进程,即使 netcat 终止,它也会永远运行。)
如果我以某种方式知道尾部的 PID,那么我就可以在之后杀死它。
显然,使用 $!将返回 netcat 的 PID。
如何获取tail进程的PID?
最佳答案
另一种选择:使用重定向到子外壳。这改变了后台进程的启动顺序,所以 $!给出 tail
进程的 PID。
tail -f $1 > >(nc -l -p 9977) &
wait $!
关于bash - 如何获取通过管道传输到 Bash 中另一个进程的进程的 PID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1652680/