Si, en bash
, j'exécute:
cmd1 | cmd2 | ... | cmdi | ... | cmdn &
où le cmd{1..n}
peut ne pas être distinct, comment puis-je obtenir le PID de cmdi
? Sinon, comment puis-je signaler le cmdi
processus? (Par exemple, envoyez-le SIGUSR1
?)
pkill
/ pgrep
, pidof
Etc. ne semblent pas être de bonnes réponses, car d'autres instances de cmdi
peut - être en cours d'exécution, y compris dans le cadre du même pipeline. jobs -p
donne le PID de cmd1
, pour moi.
i
peut être n'importe quoi {1..n}
.
cat /var/run/out | nc -l 8080
est seulement superficiellement similaire à cmd1 | cmd2
? Votre contrainte, que vous souhaitiez taper le pipeline bare-bones puis récupérer les PID, n'est (1) pas indiquée dans la question, et (2) est peu susceptible de permettre une bonne solution générale.
cmd1 | cmd2
est un cas très spécial où les deux PID sont facilement accessibles. Ai-je dit quelque chose sur n? Alors pourquoi supposeriez-vous que n = 2? Ai-je dit quoi que ce soit cmdi? Alors pourquoi supposeriez-vous que je pourrais modifier cmdi? Je demande une solution générale et vous imposez des restrictions.