Lệnh Timeout trong Linux: Thiết lập thời gian chạy cho lệnh
Trong bài này mình sẽ hướng dẫn cách sử dụng lệnh Timeout để thiết lập thời gian chạy tối đa cho một lệnh Linux nào đó.
Trong Linux có rất nhiều lệnh khác nhau, và mỗi lệnh sẽ có một chức năng khác nhau, mục tiêu cuối cùng là giúp người dùng thao tác nhanh và hiệu quả hơn.
Trong số các lệnh thì có một lệnh rất hay được dùng để thiết lập thời gian chạy cho các lệnh khác, đó là lệnh Timeout. Và trong bài này mình sẽ hướng dẫn cách sử dụng nó ở mức cơ bản nhất.
1. Giới hạn thời gian chạy bằng lệnh Timeout
Linux có một tiện ích command-line được gọi là timeout, nó cho phép bạn thực hiện một lệnh trong một khoảng thời gian cụ thể.
Bài viết này được đăng tại [free tuts .net]
Cú pháp của nó như sau.
timeout [OPTION] DURATION COMMAND [ARG]...
Như vậy, để sử dụng lệnh này thì ta chỉ cần truyến giá trị thời gian là số giây vào phía sau là được. Như ở ví dụ dưới đây mình chạy lệnh ping đến Googe và thiết lập thời gian tối đa là 5s, quá 5s thì lệnh kết thúc.
# timeout 5s ping google.com
Ký tự s trong thời gian 5s có thể có hoặc không. Như lệnh dưới đây là như nhau.
# timeout 5 ping google.com
Nếu bạn muốn sử dụng theo giờ hoặc phú thì có thể đổi sang các hậu tố:
- m là số phú
- h là số giờ
- d là số ngày
Một số lệnh vẫn tiếp tục chạy sau khi timeout gửi tín hiệu dứng vì quá giờ. Trường hợp này ta phải sử dụng thêm tùy chọn --kill-after.
-k, --kill-after=DURATION
Bạn cần chỉ định khoảng thời gian để cho timeout biết sau bao lâu thì tín hiệu kết thúc sẽ được gửi.
Ví dụ: lệnh hiển thị sẽ kết thúc sau 8 giây.
# timeout 8s tail -f /var/log/syslog
II. Giới hạn thời gian chạy bằng Timelimit
Timelimit sẽ chạy một lệnh, sau đó kết thúc quá trình sau một thời gian bằng cách sử dụng một tín hiệu. Ban đầu, nó chuyển một tín hiệu cảnh báo, và sau thời gian chờ nó sẽ gửi tín hiệu hủy.
Không giống như timeout, Timelimit có nhiều tùy chọn hơn như killsig, warnsig, killtime và warntime.
Timelimit có thể được tìm thấy trong repo của Debian, và để cài đặt nó thì hãy sử dụng lệnh sau.
$ sudo apt install timelimit
Đối với các hệ thống dựa trên Arch, bạn có thể cài đặt nó bằng các chương trình trợ giúp AUR, ví dụ: Pacaur Pacman và Packer.
# Pacman -S timelimit # pacaur -S timelimit # packer -S timelimit
Trên các phiên bản khác của Linux, bạn có thể download timelimit source và cài đặt nó.
Sau khi cài đặt xong là bạn có thể sử dụng được rồi đấy. Ví dụ sau mình đã sử dụng 10s.
$ timelimit -t10 tail -f /var/log/pacman.log
Lưu ý: Nếu bạn không chỉ định thời gian thì Timelimit sẽ sử dụng các giá trị mặc định gồm:
- warntime=3600s
- warnsig=15s
- killtime=120s
- killsig=9
Lệnh Timeout rất dễ sử dụng, tuy nhiên tiện ích Timelimit hơi phức tạp nhưng có nhiều lựa chọn hơn. Bạn có thể lựa chọn phương án phù hợp nhất tùy theo nhu cầu của mình.
Qua bài này bạn đã biết cách sử dụng hai công cụ là timeout và timelimit để giới hạn thời gian chạy của một lệnh Linux nào đó. Chúc bạn thành công!