timeout
là một lệnh - vì vậy nó đang thực hiện trong một tiến trình con của bash shell của bạn. Do đó nó không có quyền truy cập vào các hàm của bạn được định nghĩa trong trình bao hiện tại của bạn.
Lệnh timeout
được đưa ra được thực thi dưới dạng tiến trình con của thời gian chờ - một quá trình con của bạn.
Bạn có thể bị nhầm lẫn vì echo
là cả trình tích hợp vỏ và lệnh riêng biệt.
Những gì bạn có thể làm là đặt hàm của bạn vào tệp tập lệnh riêng của nó, chmod nó có thể thực thi, sau đó thực thi nó với timeout
.
Ngoài ra ngã ba, thực hiện chức năng của bạn trong một vỏ phụ - và trong quá trình ban đầu, theo dõi tiến trình, giết chết tiến trình con nếu quá lâu.
Nguồn
2012-03-31 09:51:22
http://stackoverflow.com/questions/12321469/retry-a-bash-command-with-timeout/35977896#35977896 –