NỘI DUNG

Hosting tốc độ cao Vietnix - tốc độ tải trang trung bình dưới 1 giây
VPS siêu tốc Vietnix - trải nghiệm mượt mà, ổn định
30/08/2024
Lượt xem

Cách chạy song song lệnh Bash đơn giản, dễ hiểu nhất với 3 ví dụ chi tiết

30/08/2024
13 phút đọc
Lượt xem

Đánh giá

Trong môi trường Bash, bạn có thể chạy nhiều lệnh cùng một lúc (kỹ thuật chạy lệnh song song). Nhờ vậy, thời gian thực hiện công việc sẽ được rút ngắn đáng kể. Trong bài viết này, Vietnix sẽ giới thiệu các cách khác nhau để chạy song song lệnh Bash dưới dạng nhóm tập lệnh (script) được minh họa bằng 3 ví dụ thực tế.

Môi trường Bash trong Linux là gì?

Bash (viết tắt của Bourne Again Shell) là môi trường cung cấp đến người dùng sử dụng với hệ thống giao diện Unix/Linux. Bạn có thể được thông dịch ngôn ngữ các dòng lệnh khi sử dụng chương trình.

Giới thiệu về Bash Script
Môi trường Bash trong Linux

5 ưu điểm khi sử dụng hàm Bash

  1. Thực thi nhiều lệnh cùng lúc nhanh cóng chứa trong 1 script: Tất cả các lệnh khi được thực thi bới bất kỳ một script nào từ Bash đều trở nên dễ dàng và thuận tiện hơn.
  2. Tối ưu hóa nhiều công việc: Lập kế hoạch thực hiện dựa trên thời gian của cron giúp cho việc thực thi tập lệnh được tối ưu hóa vào bất kỳ thời điểm xác định nào.
  3. Các lệnh được thực thi với cấu trúc hoàn chỉnh: Khi nhập các lệnh vào tệp script bạn có thể thiết lập cấu trúc trình tự các lệnh theo dạng chuỗi. Và khi thực hiện lệnh bằng cách sử dụng bash script, chúng sẽ chạy theo thứ tự hoàn hảo.
  4. Độ bảo mật cao: Mọi người có thể mở ra và kiểm tra code một cách dễ dàng trên tập văn bản Shell Script. Tuy nhiên nếu bạn thực hiện lệnh bằng một chương trình script với ngôn ngữ khác, bạn sẽ cần truy cập đến code nguồn.
  5. Liên kết chia sẻ rộng rãi: Nếu các lệnh shell đã có sẵn trong một hệ điều hành khác, bạn có thể chuyển một bash script sang hệ điều hành đó dựa trên phiên bản Unix khác.

Giải thích:

  • Cron: một tiện ích mạnh mẽ trong hệ điều hành Linux (bao gồm cả Bash) cho phép bạn tự động hóa các tác vụ theo lịch trình.

Với sự có mặt của Cron, bạn có thể thực thi script ở mọi thời điểm. Thay vì nhập từng dòng lệnh Linux, bạn cò thể tiết kiệm thời gian và tăng năng suất hơn với tiện tích này.

 

Đặc biệt, khi thực hiện Script trong môi trường Bash, bạn cũng cần thành thạo trước các câu lệnh trong Linux cơ bản để thuận tiện hơn trong quá trình thực hiện chuỗi lệnh.

Ngoài ra, bạn có thể tham khảo chi tiết một số bảng phím tắt chuyên dụng trong Bash Script – Bash Scripting Cheat Sheet để quá trình làm việc được tối ưu hơn.

Cách 1: Sử dụng tùy chọn & trong cú pháp chạy các lệnh song song

Đây là cách đơn giản nhất để chạy các lệnh song song. Bạn chỉ cần thêm dấu & sau mỗi lệnh để cho phép shell thực hiện lệnh tiếp theo mà không cần đợi lệnh trước hoàn thành.

Cú pháp cơ bản:

command1&

command2&

Cách 2: Thực hiện lệnh wait với tùy chọn &

Lệnh wait sẽ chờ tất cả các tiến trình con (child processes) kết thúc. Khi kết hợp wait với dấu & sẽ cho phép chạy các nhóm lệnh song song. Tuy nhiên, nhược điểm của cách này là bạn không thể bắt đầu một tiến trình mới ngay khi một tiến trình đang chạy kết thúc.

Cú pháp cơ bản:

command1&

command2&

wait

Cách 3: Thực hiện lệnh xargs để chạy song song nhiều lệnh

Lệnh xargs kết hợp với tùy chọn -p cho phép chạy các lệnh song song. Tùy chọn -p chỉ định số lượng tiến trình tối đa được phép chạy song song.

Giả sử, bạn có một list file files.txt và muốn xóa tất cả những file đó. Bạn có thể sử dụng lệnh xarg chia nhỏ file đó thành nhiều đối tượng nhằm thực hiện tập lệnh theo cách song song.

Thực hiện với cú pháp lệnh cat như sau:

cat files.txt | xargs -p 4 rm

Bạn có thể hiểu rõ tiến trình thực hiện Bash Script được tóm tắt với 2 bước như sau:

  1. Bash sẽ nhận tất cả stdin (đầu vào chuẩn) dưới dạng nguồn dữ liệu Input khi thực thi lệnh thuộc script. Quá trình này được minh họa rõ với Bash Input – thực hiện xử lý Input (đầu vào của dữ liệu).
  2. Sau khi nhận diện input (dữ liệu đầu vào), lệnh cat sẽ nhận đầu dữ liệu đầu vào từ đầu ra của lệnh xargs và thực hiện xử lý dựa trên tính năng nối tiếp lệnh (Bash Piping)

Trong đó:

  • 4: Là một số lượng chỉ định tiến trình tối đa có thể chạy cùng một lúc là 4
  • -p: Tùy chọn giới hạn số lượng tiến trình.
  • Lệnh cat sẽ đọc dữ liệu của file.txt và đưa đến stdout (đầu ra chuẩn)
  • |: ống dẫn pipe, kết nối đầu ra của lệnh cat và đầu vào lệnh xargs

Bước cuối cùng bạn cần đưa toàn bộ dữ liệu đầu ra từ file phía trên vào lệnh rm để xóa

Ngoài ra, khi thực hiện tiến trình, bạn cũng có thể có nhiều cách xóa file và xóa thư mục trong Linux nhanh chóng và dễ dàng.

Cách 4: Thực hiện chạy script song song với GNU Parallel

GNU Parallel là một công cụ mạnh mẽ cho phép bạn chạy các lệnh song song, cung cấp tính linh hoạt và kiểm soát quá trình thực thi. Bạn cần cài đặt GNU Parallel trước khi sử dụng.

Cú pháp cơ bản:

parallel ::: prog1 prog2

Trong đó, ::: là cú pháp đặc biệt để để lệnh parallel lặp lại danh sách các đối số.

Ví dụ 1: Chạy Script Bash với nhiều lệnh song song bằng lệnh wait

Trong ví dụ này, bạn sẽ tạo một script Bash với nhiều lệnh và sử dụng dấu & cùng với lệnh wait để thực hiện các lệnh này song song. Dưới đây là script Bash:

#! /bin/bash

#Command 1 running in the background

uname&

#Command 2 running in the background

date&

#Command 3 running in the background

ls -l&

#wait for all background processes to complete

wait

echo "All commands completed"

Giải thích:

  • Dòng đầu tiên #!/bin/bashshebang hay hashbang, cho biết trình thông dịch được sử dụng để chạy script, trong trường hợp này là Bash.
  • 3 lệnh uname, datels -l được chạy song song bằng cách thêm dấu & sau mỗi lệnh.
  • Lệnh wait sẽ chờ đợi cho đến khi tất cả các tiến trình chạy nền hoàn thành.
  • Cuối cùng, lệnh echo in ra thông báo khi tất cả các lệnh đã hoàn thành.

Chạy Script Bash với nhiều lệnh song song bằng lệnh wait
Chạy Script Bash với nhiều lệnh song song bằng lệnh wait

Kết quả: Khi chạy script này, bạn sẽ thấy các lệnh được chạy song song và kết quả của từng lệnh được hiển thị lần lượt.

Ví dụ 2: Chạy song song nhiều lệnh bash bằng GNU Parallel

Trong ví dụ này, bạn sẽ sử dụng công cụ GNU Parallel để chạy nhiều lệnh Bash song song trong một script. Lưu ý rằng công cụ này không được cài đặt mặc định. Bạn có thể cài đặt GNU Parallel trên Ubuntu bằng lệnh sudo sau:

sudo apt install parallel

Để chạy lệnh song song bằng GNU Parallel, bạn sử dụng script Bash sau:

#! /bin/bash

commands=(

      "date"

       "uname"

       "uptime"

)

parallel --jobs 3 ::: "${commands[@]}"

echo "All commands completed"

Giải thích:

  • Script bắt đầu bằng việc tạo một mảng có tên commands, chứa các lệnh cần thực thi song song (date, uname, uptime).
  • Lệnh parallel với tùy chọn --jobs 3 chỉ định tối đa 3 lệnh sẽ được chạy cùng một lúc.
  • Cú pháp ::: "${commands[@]}" được sử dụng để truyền các phần tử của mảng commands làm đối số cho parallel.

Chạy song song lệnh bash bằng công cụ GNU Parallel
Chạy song song lệnh bash bằng công cụ GNU Parallel

Kết quả: Sau khi chạy script sẽ hiển thị kết quả của cả 3 lệnh date, uname và uptime, cùng với thông báo “All commands completed” sau khi tất cả các lệnh kết thúc.

Ví dụ 3: Thực hiện nhiều lệnh song song bằng lệnh xargs

Trong ví dụ này, bạn sẽ sử dụng lệnh xargs trong một script Bash để chạy một số lệnh song song. Dưới đây là script Bash:

#! /bin/bash

commands=(

    "ls -l"

    "date"

    "whoami"

)

printf "%s\n"  "${commands[@]}" | xargs -I {} -P 3 sh -c "{}"

echo "All commands completed"

Giải thích: 

  • Tùy chọn -P 3 cho xargs chỉ định rằng tối đa 3 tiến trình sẽ chạy song song tại một thời điểm.
  • Tùy chọn -I {} thay thế các dấu {} trong lệnh bằng input.
  • Lệnh printf "%s\n" "${commands[@]}" in ra từng lệnh trên một dòng riêng biệt. Output này sau đó được chuyển (bằng dấu |) đến xargs.
  • xargs đọc từng dòng input và thực thi lệnh sh -c "{}" một cách song song. Lệnh này yêu cầu shell thực thi lệnh được biểu diễn bởi {}, và {} sẽ được thay thế bằng từng lệnh từ mảng khi xargs xử lý chúng.

Thực hiện nhiều lệnh song song bằng lệnh xargs
Thực hiện nhiều lệnh song song bằng lệnh xargs

Kết quả: Khi chạy script này, bạn sẽ thấy kết quả của 3 lệnh ls -l, datewhoami cùng với thông báo “All commands completed” sau khi tất cả các thao tác hoàn tất.

3 lợi ích của việc thực hiện Bash Script với nhiều lệnh song song

Việc chạy nhiều lệnh Bash song song mang lại 3 lợi ích đáng kể như:

  • Bằng cách chạy các lệnh song song, bạn có thể khai thác hiệu quả các bộ xử lý đa lõi, giúp giảm đáng kể thời gian thực hiện.
  • Trong các script Bash hoặc quy trình tự động hóa, việc chạy lệnh song song giúp tăng cường hiệu quả, đảm bảo thực thi nhanh hơn.
  • Chạy lệnh song song giúp bạn xử lý một lượng lớn file hoặc các lệnh phức tạp tốn nhiều thời gian thực thi một cách hiệu quả, nhanh chóng hơn.
  • Ngay cả trên CPU đơn lõi, việc chạy lệnh song song vẫn có thể giúp cải thiện hiệu suất bằng cách tối ưu hóa quản lý tài nguyên.
Tầm quan trọng của việc chạy lệnh Bash song song
Tầm quan trọng của việc chạy lệnh Bash song song

Tóm lại, chạy lệnh Bash song song là một kỹ thuật hữu ích, giúp bạn tối ưu hóa hiệu suất và tăng tốc độ làm việc, đặc biệt là khi xử lý các tác vụ phức tạp hoặc khối lượng dữ liệu lớn.

Câu hỏi thường gặp

Làm thế nào để chạy hai lệnh shell song song?

Để chạy hai lệnh shell song song, bạn có thể sử dụng dấu & đặt sau một lệnh để lệnh đó chạy ở chế độ nền. Điều này cho phép cả hai lệnh chạy cùng lúc. Ví dụ: command1 & command2 &.

Làm thế nào để thực hiện hai lệnh song song trong tập lệnh bash?

Để thực hiện nhiều lệnh cùng lúc trong một script Bash, bạn có thể sử dụng dấu & để chạy mỗi lệnh ở nền và sau đó dùng lệnh wait để chờ tất cả các tiến trình chạy nền hoàn thành.

Làm thế nào để chạy lệnh Bash script trên nhiều dòng?

Để chạy một Bash Script trên nhiều dòng, bạn có thể sử dụng dấu gạch chéo \ ở cuối mỗi dòng. Điều này cho phép bạn chia một lệnh dài thành nhiều dòng để dễ đọc hơn.

Lời kết

Bài viết trên đã giới thiệu đến bạn 4 cách hiệu quả để chạy song song lệnh Bash, giúp tăng tốc quá trình xử lý và tiết kiệm thời gian. Việc lựa chọn cách thực hiện phù hợp còn phụ thuộc vào yêu cầu cụ thể của từng tác vụ. Hy vọng thông tin này sẽ hữu ích cho bạn trong việc tối ưu hóa các script trong môi trường Bash. Cảm ơn bạn đọc đã dành thời gian theo dõi bài viết.

THEO DÕI VÀ CẬP NHẬT CHỦ ĐỀ BẠN QUAN TÂM

Đăng ký ngay để nhận những thông tin mới nhất từ blog của chúng tôi. Đừng bỏ lỡ cơ hội truy cập kiến thức và tin tức hàng ngày

Chọn chủ đề :

Hưng Nguyễn

Co-Founder
tại

Kết nối với mình qua

Kết nối với mình qua

Theo dõi
Thông báo của
guest
0 Comments
Phản hồi nội tuyến
Xem tất cả bình luận

Tăng tốc độ website - Nâng tầm giá trị thương hiệu

Tăng tốc tải trang

95 điểm

Nâng cao trải nghiệm người dùng

Tăng 8% tỷ lệ chuyển đổi

Thúc đẩy SEO, Google Ads hiệu quả

Tăng tốc ngay

SẢN PHẨM NỔI BẬT

7 NGÀY DÙNG THỬ HOSTING

NẮM BẮT CƠ HỘI, THÀNH CÔNG DẪN LỐI

Cùng trải nghiệm dịch vụ hosting tốc độ cao được hơn 100,000 khách hàng sử dụng

ĐĂNG KÝ NHẬN TÀI LIỆU THÀNH CÔNG
Cảm ơn bạn đã đăng ký nhận tài liệu mới nhất từ Vietnix!
ĐÓNG

ĐĂNG KÝ DÙNG THỬ HOSTING

7 NGÀY MIỄN PHÍ

ĐĂNG KÝ DÙNG THỬ HOSTING

7 NGÀY MIỄN PHÍ

XÁC NHẬN ĐĂNG KÝ DÙNG THỬ THÀNH CÔNG
Cảm ơn bạn đã đăng ký thông tin thành công. Đội ngũ CSKH sẽ liên hệ trực tiếp để kích hoạt dịch vụ cho bạn nhanh nhất!
ĐÓNG