Jeśli bash
wykonam:
cmd1 | cmd2 | ... | cmdi | ... | cmdn &
gdzie cmd{1..n}
mogą nie być wyraźne, w jaki sposób uzyskać PID cmdi
? Alternatywnie, jak mogę zasygnalizować cmdi
proces? (Na przykład, wysłać go SIGUSR1
?)
pkill
/ pgrep
, pidof
Itd. Nie wygląda dobrych odpowiedzi, od innych instancji cmdi
może działa, w tym w ramach tego samego rurociągu. jobs -p
podaje PID cmd1
dla mnie.
i
może być cokolwiek {1..n}
.
cat /var/run/out | nc -l 8080
jest tylko pozornie podobny do cmd1 | cmd2
? Twoje ograniczenie, że chcesz wpisać rurociąg z gołą kością, a następnie odzyskać PID, jest (1) nie wymienione w pytaniu i (2) jest mało prawdopodobne, aby pozwolić na dobre, ogólne rozwiązanie.
cmd1 | cmd2
jest bardzo szczególnym przypadkiem, w którym oba PID są łatwo dostępne. Czy mówiłem coś o n? Dlaczego więc miałbyś założyć n = 2? Czy mówiłem coś o tym, czym jest cmdi? Dlaczego więc miałbyś zakładać, że mogę zmodyfikować cmdi? Proszę o ogólne rozwiązanie, a pan nakłada ograniczenia.