Thú vị questi trên. Tôi đã cố gắng sử dụng xargs cho điều này và tôi tìm thấy một cách.
Hãy thử điều này:
seq 10 | xargs -i --max-procs=4 bash -c "echo start {}; sleep 3; echo done {}"
--max-procs=4
sẽ đảm bảo rằng không quá bốn subprocesses đang chạy tại một thời điểm.
Đầu ra sẽ trông như thế này:
start 2
start 3
start 1
start 4
done 2
done 3
done 1
done 4
start 6
start 5
start 7
start 8
done 6
done 5
start 9
done 8
done 7
start 10
done 9
done 10
Lưu ý rằng thứ tự thực hiện có thể không làm theo các lệnh theo thứ tự bạn gửi cho họ. Như bạn có thể thấy 2 bắt đầu trước 1.
Đây không phải là chủ đề, nhưng quá trình phụ. –
Bạn có thể vui lòng xem xét chấp nhận câu trả lời và thay đổi "chủ đề" thành "các quy trình phụ" trong câu hỏi của bạn không? Sử dụng các từ sai khiến bạn khó tìm thấy trên web! ;-) – Peque