6 ví dụ sử dụng lệnh “sleep” trên Centos / Ubuntu / Debian / Fedora

Nhiều lúc, chúng ta cần giảm tốc độ thực hiện các lệnh để kiểm tra các tình huống vượt quá thời gian chờ hoặc triển khai cơ chế thử lại trong các kịch bản. Lệnh sleep là một giải pháp hoàn hảo cho những tình huống như vậy.

Cú pháp của lệnh sleep rất đơn giản, nó nhận một tham số bắt buộc với một hậu tố tùy chọn. Lưu ý, trong cú pháp trên, không có khoảng trắng giữa SỐ và HẬU TỐ.

$ sleep <NUMBER>[SUFFIX]

Làm trễ thực thi lệnh Linux

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 đợ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, sử dụng dấu chấm phẩy (;) để phân tách mỗi lệnh.

Trì hoãn thực thi lệnh Linux

Đặt lệnh chờ trong 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 - đơn vị thời gian bằng giây.
  • m - đơn vị thời gian bằng phút.
  • h - đơn vị thời gian bằng giờ.
  • d - đơn vị thời gian bằng ngày.

Vì vậy, sử dụng hậu tố 'm' để chờ trong 1 phút. 

$ date '+%r'; sleep 1m; date '+%r'

Trì hoãn thời gian chỉ định lệnh Linux

Lưu ý: không được có khoảng trắng giữa SỐ và HẬU TỐ.

Đặt lệnh chờ trong 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 đó, thời gian chờ được tính bằng cách cộng tất cả các giá trị lại.

Sử dụng lệnh sau để chờ trong 1 phút và 20 giây:

$ date '+%r'; sleep 1m 20s; date '+%r'

Trong ví dụ trên đã sử dụng hai hậu tố khác nhau. Tuy nhiên cũng có thể sử dụng cùng một hậu tố.

Ví dụ: có thể sử dụng hậu tố 2s và 3s để chờ trong 5 giây.

$ date '+%r'; sleep 2s 3s; date '+%r'

Đặt lệnh Linux ở chế độ ngủ trong thời gian X

Sử dụng số thập phân với lệnh sleep

Lệnh sleep chấp nhận một số thập phân làm đầu vào. Chúng ta có thể sử dụng phương pháp này để chờ trong thời gian nhỏ hơn một giây.

Ví dụ, sử dụng giá trị 0.5s để chờ trong một nửa giây:

$ date '+%r'; sleep 0.5s; date '+%r'

Trong kết quả trên, có thể thấy rằng lệnh date hiển thị cùng một giá trị cho đơn vị thời gian là giây. Ngoài ra, cũng có thể sử dụng giá trị thập phân với các hậu tố khác. Ví dụ, giá trị 0.5m để chờ trong 30 giây:

$ date '+%r'; sleep 0.5m; date '+%r'

Sử dụng số dấu phẩy động với lệnh sleep

Làm giả đồng hồ báo thức bằng lệnh sleep

Cách sử dụng lệnh sleep để trì hoãn thực thi lệnh tiếp theo trong các ví dụ trước. Chúng ta có thể sử dụng mẹo này để mô phỏng một chiếc đồng hồ báo thức.

Đặt báo thức sau 5 giây:

$ sleep 5; cvlc alarm.mp3

Mô phỏng đồng hồ báo thức với lệnh sleep

Lệnh trên mở tệp alarm.mp3 bằng trình phát đa phương tiện VLC sau khi đợi trong 5 phút. Tương tự 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 đa phương tiện VLC.

Trong ví dụ này, chúng ta đã sử dụng trình phát đa phương tiện VLC, nhưng cũng có thể sử dụng bất kỳ trình phát đa phương tiện hoặc tiện ích âm thanh khác trong Linux để đạt được kết quả tương tự.

Mô phỏng đồng hồ số

Để mô phỏng một đồng hồ số, chúng ta chạy lệnh sleep trong một vòng lặp vô hạn sau mỗi giây.

Đầu tiên, viết một shell script đơn giản được gọi là digital-clock.sh với đoạn mã sau:

#!/bin/bash
while [ 1 ]
do
clear
tput cup 5 30
date '+%r'
sleep 1
done

Tiếp theo, sử dụng lệnh tput để đặt con trỏ tại hàng thứ 5 và cột thứ 30.

Chạy ví dụ và xem kết quả:

$ chmod +x digital-clock.sh 
$ ./digital-clock.sh

Kết quả hiển thị một đồng hồ số được cập nhật sau mỗi giây trên hàng thứ 5, cột thứ 30 của terminal.