Wenn bash
ich in ausführe:
cmd1 | cmd2 | ... | cmdi | ... | cmdn &
Wo cmd{1..n}
kann das die PID von nicht unterscheiden cmdi
? Wie kann ich alternativ den cmdi
Prozess signalisieren ? (Zum Beispiel ist es senden SIGUSR1
?)
pkill
/ pgrep
, pidof
Usw. sieht nicht aus wie gute Antworten, da andere Instanzen cmdi
vielleicht läuft, unter anderem als Teil der gleichen Pipeline. jobs -p
gibt die PID von cmd1
für mich.
i
kann alles sein in {1..n}
.
cat /var/run/out | nc -l 8080
ist nur oberflächlich ähnlich zu cmd1 | cmd2
? Ihre Einschränkung, dass Sie die Bare-Bones-Pipeline eingeben und dann die PIDs wiederherstellen möchten, ist (1) in der Frage nicht angegeben und (2) es ist unwahrscheinlich, dass eine gute, allgemeine Lösung möglich ist.
cmd1 | cmd2
ist ein ganz besonderer Fall, in dem beide PIDs leicht erhältlich sind. Habe ich etwas über n gesagt? Warum würden Sie also n = 2 annehmen? Habe ich etwas darüber gesagt, was cmdi ist? Warum sollten Sie also annehmen, dass ich cmdi ändern könnte? Ich bitte um eine allgemeine Lösung und Sie legen Beschränkungen auf.