Se, em bash, eu executar:
cmd1 | cmd2 | ... | cmdi | ... | cmdn &
onde o cmd{1..n}pode não ser distinto, como obtenho o PID cmdi? Como alternativa, como posso sinalizar o cmdiprocesso? (Por exemplo, enviar SIGUSR1?)
pkill/ pgrep, pidofEtc. não parecem boas respostas, pois outras instâncias cmdipodem estar em execução, inclusive como parte do mesmo pipeline. jobs -pdá o PID de cmd1, para mim.
ipode ser qualquer coisa {1..n}.
cat /var/run/out | nc -l 8080é apenas superficialmente semelhante a cmd1 | cmd2? Sua restrição de que você deseja digitar o pipeline de esqueleto e depois recuperar os PIDs (1) não é declarada na pergunta e (2) dificilmente permitirá uma solução boa e geral.
cmd1 | cmd2é um caso muito especial em que ambos os PIDs são facilmente obtidos. Eu disse alguma coisa sobre n? Então, por que você assumiria n = 2? Eu disse alguma coisa sobre o que é cmdi? Então, por que você acha que eu poderia modificar o cmdi? Estou pedindo uma solução geral e você está impondo restrições.