Helpex - Trao đổi & giúp đỡ Đăng nhập

Chạy lệnh Bash song song

Một máy chủ hiện đại thường là đa lõi, thậm chí có thể là đa CPU. Đó là rất nhiều sức mạnh tính toán để giải phóng cho một công việc nhất định. Tuy nhiên, trừ khi bạn chạy một công việc song song, bạn đang không sử dụng tối đa tất cả sức mạnh đó.

Dưới đây là một số thao tác hàng ngày điển hình mà chúng ta có thể tăng tốc bằng cách sử dụng tính toán song song:

  1. Sao lưu các tệp từ nhiều thư mục nguồn vào một đĩa di động.
  2. Thay đổi kích thước tệp hình ảnh trong một thư mục.
  3. Nén tệp trong một thư mục.

Để thực hiện một công việc song song, bạn có thể sử dụng bất kỳ lệnh nào sau đây:

  • ppss
  • pexec
  • GNU parallel

Bài đăng này tập trung vào lệnh song song GNU .

Cài đặt GNU Song song

Để cài đặt GNU paralleltrên hệ thống Debian / Ubuntu, hãy chạy lệnh sau:

$ sudo apt-get install parallel

Sử dụng chung

Các GNU parallelchương trình cung cấp nhiều tùy chọn mà bạn có thể chỉ định để tùy chỉnh hành vi của nó. Bạn đọc quan tâm có thể đọc mantrang của nó để tìm hiểu thêm về cách sử dụng của chúng. Trong bài đăng này, tôi sẽ thu hẹp việc thực thi GNU parallelthành kịch bản sau.

Mục tiêu của tôi là chạy một lệnh shell song song nhưng trên cùng một máy đa lõi. Lệnh có thể có nhiều tùy chọn, nhưng chỉ có 1 là có thể thay đổi. Cụ thể, bạn chạy các phiên bản đồng thời của lệnh bằng cách cung cấp một giá trị khác cho tùy chọn một biến đó. Các giá trị khác nhau được cung cấp, một giá trị trên mỗi dòng, GNU parallelthông qua đầu vào tiêu chuẩn.

Phần còn lại của bài đăng này chỉ ra cách GNU parallelcó thể sao lưu nhiều thư mục nguồn bằng cách chạy rsyncsong song.

Sao lưu song song

Lệnh sau sao lưu song song 2 thư mục: /home/peter/data.

$ echo -e '/home/peter\n/data' | parallel -j-2 -k --eta rsync -R -av {} /media/myBKUP

Đầu vào chuẩn

Các echolệnh lắp ráp các địa điểm mục 2 nguồn, cách nhau bằng một ký tự xuống dòng ( \n), và ống dẫn nó đến GNU parallel.

Có bao nhiêu việc làm?

Theo mặc định, GNU paralleltriển khai 1 công việc cho mỗi lõi. Bạn có thể ghi đè mặc định bằng cách sử dụng -jtùy chọn.

-jchỉ định số lượng công việc song song tối đa GNU parallelcó thể triển khai. Số lượng tối đa có thể được chỉ định theo một trong số các cách sau:

  • -jtheo sau là một số -j2có nghĩa là có thể chạy song song 2 công việc.
  • -j+theo sau là một số -j+2có nghĩa là số lượng công việc tối đa là số lõi cộng với 2.
  • -j-theo sau là một số -j-2có nghĩa là số công việc tối đa là số lõi trừ đi 2.

Nếu bạn không biết máy có bao nhiêu lõi, hãy chạy lệnh dưới đây:

$ parallel --number-of-cores
8

Giữ thứ tự đầu ra

Mỗi công việc có thể xuất các dòng tới đầu ra tiêu chuẩn. Khi nhiều công việc được chạy song song, hành vi mặc định là đầu ra của một công việc được hiển thị ngay sau khi công việc kết thúc. Bạn có thể thấy điều này khó hiểu vì thứ tự đầu ra có thể khác với thứ tự đầu vào. Các -ktùy chọn giữ chuỗi đầu ra giống như các chuỗi đầu vào.

Hiển thị Tiến độ

Các --etabáo cáo lựa chọn tiến bộ trong khi GNU parallelthực thi, kể cả thời gian còn lại ước tính (tính bằng giây).

Nhập nơi giữ chỗ

GNU parallelthay thế {}tham số bằng dòng tiếp theo trong đầu vào chuẩn.

Mỗi dòng đầu vào là một vị trí thư mục, ví dụ /home/peter. Thay vì vị trí đầy đủ, bạn có thể chỉ định các tham số khác để trích xuất một phần của chúng - ví dụ: tên thư mục ( /home) và tên cơ sở ( peter). Vui lòng tham khảo trang người đàn ông để biết chi tiết.

Tóm lược

GNU parallellà một công cụ mà các quản trị viên Linux nên thêm vào kho của họ. Chạy một công việc song song chỉ có thể nâng cao hiệu quả của một người. Nếu bạn đã quen thuộc xargs, bạn sẽ thấy cú pháp quen thuộc. Ngay cả khi bạn chưa quen với lệnh, có rất nhiều trợ giúp trực tuyến trên trang web song song GNU .

9 hữu ích 0 bình luận 9.7k xem chia sẻ

Có thể bạn quan tâm

loading