Nếu, trong bash, tôi thực thi:
cmd1 | cmd2 | ... | cmdi | ... | cmdn &
Trường hợp cmd{1..n}có thể không khác biệt, làm thế nào để tôi có được PID cmdi? Ngoài ra, làm thế nào tôi có thể báo hiệu cmdiquá trình? (Ví dụ: gửi nó SIGUSR1?)
pkill/ pgrep, pidofV.v. không giống như câu trả lời hay, vì các trường hợp khác cmdicó thể đang chạy, bao gồm cả một phần của cùng một đường ống. jobs -pcung cấp cho PID của cmd1, cho tôi.
icó thể là bất cứ điều gì trong {1..n}.
cat /var/run/out | nc -l 8080chỉ là bề ngoài tương tự để cmd1 | cmd2? Hạn chế của bạn, rằng bạn muốn nhập đường ống xương trần và sau đó phục hồi các PID, là (1) không được nêu trong câu hỏi và (2) không thể cho phép một giải pháp chung, tốt.
cmd1 | cmd2là một trường hợp rất đặc biệt khi cả hai PID đều có thể dễ dàng lấy được. Tôi có nói gì về n không? Vậy tại sao bạn lại giả sử n = 2? Tôi đã nói bất cứ điều gì về cmdi là gì? Vậy tại sao bạn cho rằng tôi có thể sửa đổi cmdi? Tôi đang yêu cầu một giải pháp chung và bạn đang áp đặt các hạn chế.