Tôi có thể giới hạn thời gian chạy của một cronjob không


8

Tôi đã có một cronjob chạy hàng giờ đôi khi mất quá nhiều thời gian để chạy, có cách nào tôi có thể đặt thời gian chạy tối đa và công việc bị giết nếu vượt quá điều đó không?

Đây là trên một máy chủ Ubuntu 10.04.

Cảm ơn

Câu trả lời:


11

Hãy thử timeoutlệnh. Ví dụ:

0 * * * * timeout -2 3540 /path/to/your_command.sh

sẽ gửi SIGINT tới lệnh của bạn nếu nó chưa hoàn thành sau 59 phút.


Thông tin tốt. Bạn đã bỏ lỡ '-s', nhưng đó là "thời gian chờ -s 2 3540 <lệnh>".
Cá giám sát

Cái được cài đặt qua apt trên usage: timeout [-signal] time command...
ubfox

'Dpkg -S bin / timeout' mang lại điều gì? Trong thực tế, tôi là từ coreutils và là GNUish thuần túy.
Cá giám sát

timeout: /usr/bin/timeout
Cakemox

10.04, giống như OP.
Cakemox

0

Không. Cách chúng ta làm là tạo một tập lệnh với tệp khóa và kiểm tra tập lệnh cho tập tin khóa đó trước khi bắt đầu chạy lại, vì vậy nó có thể kiểm tra xem nó đã chạy chưa và quyết định xem nó có chạy hay không, nếu nó chờ người khác chạy kết thúc hoặc nếu nó giết người khác trước khi chạy.

Tệp khóa chỉ là một tệp trống hoặc một tệp có tập lệnh khác được PIDlưu ở đâu đó như /var/runhoặc /var/lock.


0

Câu trả lời của cakemox là tốt nhất. Nếu không, chỉ cần đặt tệp pid vào một tệp hoặc sử dụng killall trên cronjob anouther một phút trước đó để giết quá trình.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.