How to get the PID of a process that is piped to another process in Bash?

前端 未结 14 1229
无人共我
无人共我 2020-12-01 01:35

I am trying to implement a simple log server in Bash. It should take a file as a parameter and serve it on a port with netcat.

( tail -f $1 & ) | nc -l -         


        
14条回答
  •  星月不相逢
    2020-12-01 02:26

    Maybe you could use a fifo, so that you can capture the pid of the first process, e.g.:

    FIFO=my_fifo
    
    rm -f $FIFO
    mkfifo $FIFO
    
    tail -f $1 > $FIFO &
    TAIL_PID=$!
    
    cat $FIFO | nc -l -p 9977
    
    kill $TAIL_PID
    
    rm -f $FIFO
    

提交回复
热议问题