考虑以下简化的例子:
my_prog|awk '...' > output.csv &
my_pid="$!" #获取的是awk的PID而不是my_prog的PID
sleep 10
kill $my_pid #my_prog仍然有未被awk处理的数据在其缓冲区中,这些数据将会丢失!
在Bash中,$my_pid
指的是awk
的PID。然而,我需要my_prog
的PID。如果我杀死了awk
,my_prog
不知道要刷新其输出缓冲区,数据将会丢失。那么,如何获取my_prog
的PID呢?请注意,ps aux|grep my_prog
将无法工作,因为可能存在多个my_prog
。