Tôi đang viết một tập lệnh nhỏ gọi là "PNGOUT" trên một vài trăm tệp PNG. Tôi chỉ cần làm điều này:Bash: làm thế nào để chỉ đơn giản là song song nhiệm vụ?
find $BASEDIR -iname "*png" -exec pngout {} \;
Và sau đó tôi nhìn vào màn hình CPU của mình và nhận thấy chỉ một lõi được sử dụng, khá buồn.
Trong ngày và tuổi của lõi kép, quad, octo và hexa (?) Máy tính để bàn, làm thế nào để tôi chỉ đơn giản là song song nhiệm vụ này với Bash? (Đây không phải là lần đầu tiên tôi có nhu cầu như vậy, vì khá nhiều những cái utils này là mono-ren ... Tôi đã có trường hợp với bộ mã hóa mp3).
Chỉ cần chạy tất cả pngout trong nền hoạt động? Khi đó, của tôi sẽ tìm thấy lệnh như thế nào? (Tôi không chắc chắn cách trộn tìm và ký tự '&')
Tôi nếu có ba trăm ảnh, điều này có nghĩa là hoán đổi giữa ba trăm quy trình, điều này dường như không tuyệt vời sao !?
Hoặc tôi nên sao chép ba file hàng trăm tôi hoặc lâu hơn trong "nb dirs", nơi "nb dirs" sẽ được số lượng lõi, sau đó chạy đồng thời "nb thấy"? (sẽ đủ gần)
Nhưng làm cách nào để tôi thực hiện việc này?
Tốt bắt. Ưu điểm của nguồn mở. Ai đó đã dành thời gian để xây dựng giống trứng và theo dõi mã thành xargs. Điều này là tương đối tầm thường đối với một cái gì đó như xargs. Lưu ý rằng tt có khả năng sẽ làm tăng tốc độ CPU của bạn trong khoảng thời gian nó chạy. Tôi theo dõi lõi tứ của mình và hiếm khi có tải trọng đáng kể. Có bốn nhiệm vụ BOINC niced đến giới hạn để tải trung bình là gần như alway hơi hơn 4. – BillThor
haha! tôi đã có một bộ nhớ mờ nhạt rằng xargs có thể làm điều đó ... nhưng thật thú vị khi làm điều đó trong bash, ngay cả khi nó không tối ưu. (lưu ý, sử dụng -print0 trên tìm và -0 trong xargs để tránh các vấn đề với tên tập tin khó chịu) – Javier
@Javier: nó tuyệt vời anyway để xem ở đây cách khác nhau để làm điều đó :) Tôi chỉnh sửa câu trả lời của riêng tôi để phản ánh của bạn * -print0 */* -0 * đề xuất :) – NoozNooz42