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 cmdi
quá trình? (Ví dụ: gửi nó SIGUSR1
?)
pkill
/ pgrep
, pidof
V.v. không giống như câu trả lời hay, vì các trường hợp khác cmdi
có thể đang chạy, bao gồm cả một phần của cùng một đường ống. jobs -p
cung cấp cho PID của cmd1
, cho tôi.
i
có thể là bất cứ điều gì trong {1..n}
.
cat /var/run/out | nc -l 8080
chỉ 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 | cmd2
là 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ế.