Se, in bash
, eseguo:
cmd1 | cmd2 | ... | cmdi | ... | cmdn &
dove il cmd{1..n}
non può essere distinto, come ottengo il PID di cmdi
? In alternativa, come posso segnalare il cmdi
processo? (Ad esempio, inviarlo SIGUSR1
?)
pkill
/ pgrep
, pidof
Ecc. Non sembrano buone risposte, poiché altre istanze di cmdi
forse in esecuzione, incluso come parte della stessa pipeline. jobs -p
dà il PID di cmd1
, per me.
i
può essere qualsiasi cosa dentro {1..n}
.
cat /var/run/out | nc -l 8080
è solo superficialmente simile a cmd1 | cmd2
? Il vostro vincolo, che si desidera digitare la pipeline bare-bones e quindi ripristinare i PID, non è (1) indicato nella domanda e (2) è improbabile che consenta una buona soluzione generale.
cmd1 | cmd2
è un caso molto speciale in cui entrambi i PID sono facilmente ottenibili. Ho detto qualcosa su n? Quindi perché dovresti assumere n = 2? Ho detto qualcosa su cos'è cmdi? Quindi, perché pensi che potrei modificare cmdi? Sto chiedendo una soluzione generale e tu stai imponendo restrizioni.