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 cmdi
processo? (Por exemplo, enviar SIGUSR1
?)
pkill
/ pgrep
, pidof
Etc. não parecem boas respostas, pois outras instâncias cmdi
podem estar em execução, inclusive como parte do mesmo pipeline. jobs -p
dá o PID de cmd1
, para mim.
i
pode 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.