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 cmdiprocessus? (Par exemple, envoyez-le SIGUSR1?)
pkill/ pgrep, pidofEtc. ne semblent pas être de bonnes réponses, car d'autres instances de cmdipeut - être en cours d'exécution, y compris dans le cadre du même pipeline. jobs -pdonne le PID de cmd1, pour moi.
ipeut être n'importe quoi {1..n}.
cat /var/run/out | nc -l 8080est 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 | cmd2est 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.