Với GNU Parallel, bạn sẽ làm được:
parallel script-to-run.sh input/ output/ {} ::: {0..99}
Thêm vào -P8
nếu bạn không muốn chạy một công việc trên mỗi lõi CPU.
Ngược xargs
lại nó sẽ thực hiện Điều đúng đắn, ngay cả khi đầu vào chứa khoảng trắng, 'hoặc "(tuy nhiên, không phải trường hợp ở đây). Nó cũng đảm bảo đầu ra từ các công việc khác nhau không bị trộn lẫn với nhau, vì vậy nếu bạn sử dụng đầu ra thì bạn đảm bảo rằng bạn sẽ không nhận được nửa dòng từ hai công việc khác nhau.
GNU Parallel là một trình song song chung và giúp dễ dàng chạy các công việc song song trên cùng một máy hoặc trên nhiều máy mà bạn có quyền truy cập ssh.
Nếu bạn có 32 công việc khác nhau mà bạn muốn chạy trên 4 CPU, thì một cách đơn giản để chạy song song là chạy 8 công việc trên mỗi CPU:
GNU Parallel thay vào đó tạo ra một quá trình mới khi một quá trình kết thúc - giữ cho các CPU hoạt động và do đó tiết kiệm thời gian:
Cài đặt
Nếu GNU Parallel không được đóng gói cho bản phân phối của bạn, bạn có thể thực hiện cài đặt cá nhân mà không yêu cầu quyền truy cập root. Nó có thể được thực hiện trong 10 giây bằng cách làm như sau:
$ (wget -O - pi.dk/3 || lynx -source pi.dk/3 || curl pi.dk/3/ || \
fetch -o - http://pi.dk/3 ) > install.sh
$ sha1sum install.sh | grep 67bd7bc7dc20aff99eb8f1266574dadb
12345678 67bd7bc7 dc20aff9 9eb8f126 6574dadb
$ md5sum install.sh | grep b7a15cdbb07fb6e11b0338577bc1780f
b7a15cdb b07fb6e1 1b033857 7bc1780f
$ sha512sum install.sh | grep 186000b62b66969d7506ca4f885e0c80e02a22444
6f25960b d4b90cf6 ba5b76de c1acdf39 f3d24249 72930394 a4164351 93a7668d
21ff9839 6f920be5 186000b6 2b66969d 7506ca4f 885e0c80 e02a2244 40e8a43f
$ bash install.sh
Để biết các tùy chọn cài đặt khác, hãy xem http://git.savannah.gnu.org/cgit/parallel.git/tree/README
Tìm hiểu thêm
Xem thêm các ví dụ: http://www.gnu.org/software/parallel/man.html
Xem video giới thiệu: https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1
Xem qua hướng dẫn: http://www.gnu.org/software/parallel/parallel_tutorial.html
Đăng ký danh sách email để nhận hỗ trợ: https://lists.gnu.org/mailman/listinfo/parallel