Cách hết thời gian chờ một lệnh trong Bash mà không bị chậm trễ không cần thiết

Cach Het Thoi Gian Cho Mot Lenh Trong Bash Ma Khong Bi Cham Tre Khong Can Thiet



Trong Bash, đôi khi bạn có thể cần chạy một lệnh mất nhiều thời gian để hoàn thành và bạn có thể không muốn đợi nó kết thúc vô thời hạn. Một giải pháp cho vấn đề này là sử dụng lệnh hết thời gian giới hạn lượng thời gian mà lệnh có thể chạy. Bài viết này sẽ thảo luận về cách hết thời gian chờ một lệnh trong Bash mà không bị chậm trễ không cần thiết.

Hết thời gian chờ một lệnh trong Bash

Để hết thời gian chờ một lệnh trong Bash, chúng ta có thể sử dụng 'hết giờ' yêu cầu. Lệnh “timeout” không có sẵn theo mặc định trên tất cả các hệ thống, nhưng nó có thể được cài đặt bằng trình quản lý gói trên hầu hết các bản phân phối Linux, đây là cú pháp của lệnh “timeout”:







hết giờ [ LỰA CHỌN ] THỜI LƯỢNG LỆNH [ ARG ]


Ở đây, “TÙY CHỌN” là một đối số tùy chọn chỉ định hành vi của lệnh hết thời gian chờ, “DURATION” là giới hạn thời gian để lệnh chạy và “LỆNH [ARG]” là lệnh và các đối số của nó mà chúng tôi muốn chạy.



Ví dụ: giả sử chúng ta muốn chạy lệnh “ngủ” trong năm giây, nhưng chúng ta muốn hết thời gian chờ lệnh sau ba giây và đây là tập lệnh shell ví dụ:



#!/bin/bash
tiếng vang 'Bắt đầu lệnh ngủ với thời gian chờ là 3 giây...'
thời gian chờ 3 giây ngủ 5s
tiếng vang 'Lệnh ngủ đã hoàn thành.'


Ở đây tôi đã chỉ định thời lượng của thời gian chờ là 3 giây và thời lượng của lệnh “ngủ” là 5 giây. Lệnh “hết giờ” sẽ dừng lệnh “ngủ” sau 3 giây, mặc dù lệnh “ngủ” thường chạy trong 5 giây.






Để tránh sự chậm trễ không cần thiết khi sử dụng lệnh “timeout”, chúng ta có thể sử dụng tùy chọn “-k”. Tùy chọn “-k” chỉ định một tín hiệu sẽ được gửi tới lệnh nếu nó vượt quá giới hạn thời gian chờ. Tín hiệu này sẽ khiến lệnh kết thúc ngay lập tức, thay vì đợi nó kết thúc một cách duyên dáng.

Ví dụ: giả sử chúng tôi muốn chạy lệnh 'ngủ' trong năm giây, nhưng chúng tôi muốn hết thời gian chờ lệnh sau ba giây và gửi tín hiệu SIGINT nếu nó vượt quá giới hạn thời gian chờ. Chúng ta có thể làm điều này bằng cách chạy lệnh sau:



#!/bin/bash
tiếng vang 'Bắt đầu lệnh ngủ với thời gian chờ là 3 giây và tín hiệu SIGINT sau 2 giây'
thời gian chờ -k 2s 3s ngủ 5s
tiếng vang'
Ngủ yêu cầu hoàn thành. '


Ở đây tôi đã chỉ định khoảng thời gian chờ là 3 giây và tín hiệu sẽ được gửi dưới dạng SIGINT nếu nó vượt quá giới hạn thời gian chờ. Tùy chọn “-k 2s” chỉ định rằng tín hiệu SIGINT sẽ được gửi sau hai giây của giới hạn thời gian chờ.

Phần kết luận

Hết thời gian chờ một lệnh trong Bash là một công cụ hữu ích có thể giúp bạn chạy các lệnh hiệu quả hơn và ngăn chặn sự chậm trễ không cần thiết. Bằng cách sử dụng lệnh “hết thời gian chờ” và tùy chọn “-k”, bạn có thể giới hạn thời gian một lệnh có thể chạy và gửi tín hiệu để chấm dứt lệnh đó ngay lập tức nếu vượt quá giới hạn thời gian chờ. Điều này sẽ giúp bạn tiết kiệm thời gian và chạy tập lệnh hiệu quả hơn.