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.
5 ưu điểm khi sử dụng hàm Bash
- 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.
- 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.
- 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.
- Độ 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.
- 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.
Đặ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.
Thực hiện chạy song song nhiều lệnh với 4 cách sử dụng
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 <strong>|</strong> 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:
- 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).
- 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)
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
3 ví dụ về cách chạy lệnh Bash song song (Bash Script)
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"
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"
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"
Kết quả: Khi chạy script này, bạn sẽ thấy kết quả của 3 lệnh ls -l
, date
và whoami
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 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.