Рассмотрим следующий упрощенный пример:
my_prog|awk '...' > output.csv &
my_pid="$!" #Gives the PID for awk instead of for my_prog
sleep 10
kill $my_pid #my_prog still has data in its buffer that awk never saw. Data is lost!
В bash, $my_pid указывает на PID для awk. Однако мне нужен PID для my_prog. Если я убей awk, my_prog не знает, чтобы очистить выходной буфер и данные потеряны. Итак, как получить PID для my_prog? Обратите внимание, что ps aux|grep my_prog не будет работать, так как может быть несколько my_prog.
ПРИМЕЧАНИЕ: изменено cat на awk '...', чтобы уточнить, что мне нужно.