Tóm tắt: Trong hướng dẫn này, chúng ta sẽ thảo luận về các ví dụ thực tế về các lệnh sleep. Sau khi làm theo hướng dẫn này, các lập trình viên Linux sẽ có thể sử dụng lệnh sleep để viết các tập lệnh shell mạnh mẽ.
Các lập trình viên Linux và quản trị hệ thống thích viết các tập lệnh shell để tự động hóa các tác vụ đơn giản. Tuy nhiên, việc viết một tập lệnh mạnh mẽ không phải là một nhiệm vụ dễ dàng. Chúng ta cần xử lý nhiều trường hợp biên, chẳng hạn như - cơ chế thử lại, gỡ lỗi, ghi nhật ký, báo cáo lỗi, v.v.
Ngoài ra, nhiều lần, chúng ta cần giả lập thời gian trễ trong thực thi lệnh để kiểm tra các kịch bản thời gian chờ. Tương tự, chúng ta cần giới thiệu thời gian trễ trong tập lệnh để thực hiện cơ chế thử lại. Lệnh sleep là một giải pháp hoàn hảo để xử lý các tình huống như vậy.
Trong hướng dẫn này, chúng ta sẽ thảo luận về cách sử dụng lệnh sleep. Như tên của nó, lệnh sleep được sử dụng để chờ đợi thực thi lệnh tiếp theo. Nó khiến chương trình gọi phải ngủ trong một khoảng thời gian nhất định.
Vì vậy, hãy tìm hiểu thêm về các lệnh sleep với các ví dụ thực tế trong Linux.
cú pháp lệnh sleep
Cú pháp của lệnh sleep rất đơn giản, vì nó chấp nhận một tham số bắt buộc với một hậu tố tùy chọn:
$ sleep [SUFFIX]
Điều quan trọng cần lưu ý là, trong cú pháp trên, không có khoảng trống giữa SỐ và HẬU TỐ.
1. Cách trì hoãn thực thi Lệnh Linux
Theo mặc định, lệnh sleep chờ một số giây. Để hiểu điều này, hãy in ra thời gian hiện tại trước và sau lệnh sleep:
Ví dụ, lệnh sau đây đợi 5 giây sau khi in ra thời gian hiện tại:
$ date '+%r'; sleep 5; date '+%r'
Trong ví dụ này, chúng tôi đã sử dụng dấu chấm phẩy (;)
để tách mỗi lệnh.
2. Cách làm cho một Lệnh chờ N phút
Tùy chọn, lệnh sleep cho phép chúng ta chỉ định đơn vị thời gian bằng cách sử dụng hậu tố. Chúng ta có thể sử dụng các hậu tố sau đây với lệnh sleep:
s
- để chỉ định đơn vị thời gian bằng giây.
m
- để chỉ định đơn vị thời gian bằng phút.
h
- để chỉ định đơn vị thời gian bằng giờ.
d
- để chỉ định đơn vị thời gian bằng ngày.
Vì vậy, hãy sử dụng hậu tố 'm'
để chờ 1 phút:
$ date '+%r'; sleep 1m; date '+%r'
Điểm quan trọng cần lưu ý là không có khoảng trống giữa SỐ và HẬU TỐ.
3. Cách làm cho lệnh chờ X phút và giây
Chúng ta có thể sử dụng nhiều hậu tố với lệnh sleep. Trong trường hợp như vậy, thời gian chờ được tính bằng cách cộng tổng các giá trị.
Để hiểu điều này, hãy sử dụng lệnh sau để chờ 1 phút và 20 giây:
$ date '+%r'; sleep 1m 20s; date '+%r'
Trong ví dụ trên, chúng tôi đã sử dụng hai hậu tố khác nhau. Tuy nhiên, chúng ta cũng có thể sử dụng các hậu tố giống nhau.
Ví dụ, chúng ta có thể sử dụng hậu tố 2s và 3s để chờ 5 giây:
$ date '+%r'; sleep 2s 3s; date '+%r'
4. Cách sử dụng số thực với lệnh sleep
Ngoài ra, lệnh sleep cũng chấp nhận một số thực làm đầu vào. Chúng ta có thể sử dụng phương pháp này để chờ ít hơn một giây.
Ví dụ, chúng ta có thể sử dụng giá trị 0.5s để chờ nửa giây:
$ date '+%r'; sleep 0.5s; date '+%r'
Trong đầu ra trên, chúng ta có thể thấy rằng lệnh date hiển thị cùng một giá trị cho đơn vị thời gian giây.
Ngoài ra, chúng ta cũng có thể sử dụng các giá trị số thực với các hậu tố khác. Ví dụ, chúng ta có thể sử dụng giá trị 0.5m để chờ 30 giây:
$ date '+%r'; sleep 0.5m; date '+%r'
5. Cách mô phỏng Đồng hồ báo thức bằng lệnh sleep
Trong một số ví dụ gần đây, chúng ta đã thấy cách sử dụng lệnh sleep để trì hoãn thực thi lệnh tiếp theo. Chúng ta có thể sử dụng mẹo này để mô phỏng một đồng hồ báo thức.
Vì vậy, hãy sử dụng lệnh dưới đây để đặt báo thức sau 5 giây:
$ sleep 5; cvlc alarm.mp3
Lệnh trên mở tệp alarm.mp3 bằng trình phát phương tiện VLC sau khi đợi 5 phút. Giống như bất kỳ lệnh Linux nào khác, chúng ta có thể sử dụng tổ hợp phím ctrl+c
để dừng trình phát phương tiện VLC.
Trong ví dụ này, chúng ta đã sử dụng trình phát phương tiện VLC, nhưng có thể sử dụng bất kỳ trình phát phương tiện Linux hoặc tiện ích âm thanh nào khác để đạt được cùng kết quả.
6. Cách mô phỏng Đồng hồ số với lệnh sleep
Để mô phỏng một đồng hồ số, chúng ta có thể chạy lệnh sleep trong một vòng lặp vô hạn sau mỗi giây. Hãy hiểu điều này với một ví dụ.
Trước tiên, hãy viết một tập lệnh shell đơn giản có têndigital-clock.shvới mã sau:
#!/bin/bash
while [ 1 ]
do
clear
tput cup 5 30
date '+%r'
sleep 1
done
Trong tập lệnh này, chúng ta đã sử dụng lệnh tput để đặt con trỏ ở hàng thứ 5 và cột thứ 30.
Bây giờ, hãy chạy tập lệnh và xem kết quả:
$ chmod +x digital-clock.sh
$ ./digital-clock.sh
Sau cùng, chúng ta có thể sử dụng tổ hợp phím ctrl+c
để dừng thực thi tập lệnh.
Trong hướng dẫn này, chúng ta đã thảo luận về cách sử dụng lệnh sleep để trì hoãn thực thi lệnh tiếp theo. Các lập trình viên Linux có thể sử dụng lệnh sleep để viết các tập lệnh shell mạnh mẽ.