2013-05-23 40 views
6

Tôi đang viết kịch bản và muốn biết cách yêu cầu một trong các lệnh thoát sau vài giây. Ví dụ: giả sử tập lệnh của tôi chạy 2 lệnh ứng dụng trong đó.Làm cách nào để thoát khỏi lệnh sau n giây?

#!/bin/bash 

for i in `cat servers` 
do 
<command 1> $i >> Output_file #Consistency command 
<command 2> $i >> Output_file #Communication check 
done 

Các lệnh này là để kiểm tra tính nhất quán & liên lạc đến/từ ứng dụng. Tôi muốn biết làm thế nào để đảm bảo rằng lệnh 1 & 2 chạy trong vài giây và nếu không có phản hồi từ máy chủ cụ thể, hãy chuyển sang lệnh tiếp theo.

Cảm ơn

+1

Bạn dường như được tìm kiếm này: [Timeout một lệnh trong bash không chậm trễ không cần thiết] (http://stackoverflow.com/questions/687948/timeout- a-command-in-bash-without-unn-delay) – devnull

+0

Tôi đã có một cái nhìn @ đó, không phải là có một cách dễ dàng hơn ?? Tôi không muốn làm cho kịch bản nhỏ bé của tôi quá phức tạp! :) – Marcos

+0

điều này hữu ích cho lệnh 'display' của imagemagick không chơi độc đáo với xargs. –

Trả lời

10

bash coreutils has got 'lệnh timeout`.

Từ thủ công:

MÔ TẢ

Bắt đầu COMMAND, và giết nó nếu vẫn chạy sau NUMBER giây. SUFFIX có thể là "s" trong vài giây (mặc định), "m" trong phút, "h" cho giờ hoặc "d" trong nhiều ngày.

ví dụ:

timeout 5 sleep 6

+0

Tôi đang cố gắng cho rpcinfo trên solaris ... "timeout 5 rpcinfo -p server_name" nó cung cấp cho "lệnh không tìm thấy", nhưng có mục nhập trang con người cho nó. – Marcos

+1

'timeout' không phải là một bash built-in. Nó được cung cấp bởi GNU coreutils. – devnull

+0

Vậy làm cách nào để sử dụng? – Marcos

Các vấn đề liên quan