Chạy một công việc định kỳ cứ sau 5 phút giữa hai lần


18

Có cách nào để chỉ định một công việc chạy cứ sau 5 phút giữa thời gian bắt đầu và thời gian kết thúc vào ngày làm việc trong một crontab không?

Cập nhật Tôi nghĩ có liên quan rằng thời gian bắt đầu và kết thúc của tôi không phải là giờ làm việc. Vì vậy, chỉ định 9-5 trong cột giờ là không đủ. Tôi muốn 9: 30-17: 30.

Câu trả lời:


24

Bạn sẽ phải làm điều đó từng phần:

30-59/5 9 * * * script.sh
*/5 10-16 * * * script.sh
0-30/5 17 * * * script.sh

1

Nếu câu trả lời của Ignacio Vazquez-Abrams không thực sự phù hợp với bạn, chẳng hạn vì tập lệnh cần một số lượng lớn các tham số hoặc tiêu chí gọi là không tầm thường (hoặc không bị ràng buộc theo thời gian), thì cách tiếp cận khác là đơn giản tập lệnh trình bao bọc, gọi tập lệnh trình bao bọc đều đặn và để tập lệnh trình bao bọc kiểm tra thời gian hiện tại và gọi tập lệnh chính.

Ví dụ:

#/bin/bash

# Check to see if we should run the script now.
HOUR=$(date +%H)
MINUTE=$(date +%M)
if test $HOUR -lt 9; then exit 0; fi
if test $HOUR -eq 9 -a $MINUTE -lt 30; then exit 0; fi
if test $HOUR -eq 17 -a $MINUTE -gt 30; then exit 0; fi
if test $HOUR -gt 17; then exit 0; fi

# All checks passed; we should run the script now.
exec script.sh ... long list of parameters ...

Điều này cho phép mã hóa các tiêu chí thực thi phức tạp hơn cú pháp của cron dễ dàng cho phép, với chi phí tương đối nhỏ để gọi shell và tập lệnh riêng biệt thường xuyên.

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.