Làm thế nào để sử dụng lệnh "ngủ" của Linux để tạm dừng một tập lệnh BASH

Hướng dẫn này cho thấy cách sử dụng lệnh ngủ của Linux để tạm dừng một tập lệnh bash.

Theo cách riêng của mình, lệnh sleep hoàn toàn vô dụng trừ khi bạn thích khóa cửa sổ terminal nhưng như một phần của script, nó có thể được sử dụng theo nhiều cách khác nhau, bao gồm cả yếu tố tạm dừng trước khi thử lại lệnh.

Ví dụ, hãy tưởng tượng bạn đã có một kịch bản xử lý các tập tin được sao chép từ một máy chủ khác. Tập lệnh không được bắt đầu quá trình sao chép cho đến khi tất cả các tệp đã tải xuống xong.

Quá trình tải xuống được thực hiện bằng một tập lệnh hoàn toàn riêng biệt.

Kịch bản để sao chép các tập tin cũng có thể chứa một vòng lặp để kiểm tra xem tất cả các tập tin đã được tải xuống (tức là nó biết có 50 tệp và khi 50 tệp đã được tìm thấy, quá trình sao chép được bắt đầu).

Không có điểm kịch bản liên tục thử nghiệm vì nó chiếm thời gian xử lý. Thay vào đó, bạn có thể chọn kiểm tra xem có đủ tệp được sao chép hay không và nếu không có tạm dừng trong vài phút rồi thử lại. Lệnh ngủ hoàn hảo trong những trường hợp này.

Cách sử dụng Lệnh ngủ

Để sử dụng lệnh ngủ của Linux, hãy nhập lệnh sau vào cửa sổ dòng lệnh:

ngủ 5s

Lệnh trên sẽ làm cho thiết bị đầu cuối của bạn tạm dừng trong 5 giây trước khi đưa bạn trở lại dòng lệnh.

Lệnh ngủ yêu cầu từ khóa ngủ theo sau là số bạn muốn tạm dừng và sau đó là đơn vị đo lường.

Bạn có thể chỉ định độ trễ bằng giây, phút, giờ hoặc ngày.

Khi nói đến những ngày chờ đợi điều gì đó xảy ra, có thể đáng xem xét sử dụng một công việc cron để chạy tập lệnh trong các khoảng thời gian đều đặn như trái ngược với việc có một tập lệnh chạy trong nền cho ngày kết thúc.

Số cho lệnh ngủ không phải là một số nguyên.

Bạn cũng có thể sử dụng số dấu phẩy động.

Ví dụ, bạn hoàn toàn có thể sử dụng cú pháp sau:

ngủ 3,5s

Một ví dụ sử dụng cho lệnh Sleep

Kịch bản sau đây cho thấy cách sử dụng lệnh sleep để tạo một đồng hồ đếm ngược dựa trên thiết bị đầu cuối:

#! / bin / bash

x = 10

trong khi [$ x -gt 0]

làm

ngủ 1s

thông thoáng

echo "$ x giây cho đến khi nổ ra"

x = $ (($ x - 1))

làm xong

Tập lệnh đặt biến x thành 10. Vòng lặp while sẽ tiếp tục lặp trong khi giá trị của x lớn hơn 0.

Lệnh ngủ tạm dừng tập lệnh trong 1 giây mỗi lần vòng lặp.

Phần còn lại của kịch bản xóa màn hình mỗi lần lặp lại, hiển thị thông báo "x giây cho đến khi nổ ra" (nghĩa là 10) và sau đó trừ 1 từ giá trị của x.

Không có lệnh ngủ, tập lệnh sẽ phóng to và thông báo sẽ được hiển thị quá nhanh.

Lệnh ngủ chỉ có một vài công tắc.

Nút chuyển đổi --help hiển thị tệp trợ giúp cho lệnh ngủ. Bạn có thể đạt được điều tương tự bằng cách sử dụng lệnh man như sau:

người đàn ông ngủ

Lệnh --version cho biết phiên bản lệnh ngủ được cài đặt trên hệ thống của bạn.

Thông tin được trả về bởi chuyển đổi --version như sau: