Làm thế nào để cron xử lý phần còn lại trong các công việc thường xuyên như vậy


13

Nếu tôi làm điều này:

*/9 * * * * /path/to/wotnot

Nhiệm vụ sẽ diễn ra trong hai giờ, bắt đầu lúc 09h00

Có phải là A:

09h00
09h09
09h18
09h27
09h36
09h45
09h54
10h03
10h12
10h21
10h30
10h39
10h48
10h57

hoặc B:

09h00
09h09
09h18
09h27
09h36
09h45
09h54
10h00
10h09
10h18
10h27
10h36
10h45
10h54

Câu trả lời:


31

Khi nhìn vào một phạm vi, bạn chỉ diễn giải nó trong cột đó, vì vậy '* / 9' trong cột phút có nghĩa là "liệt kê mỗi phút, sau đó chọn mọi giá trị thứ chín". Lựa chọn này đặt lại vào đầu giờ, vì vậy bạn khởi động lại ở xx: 00, xx: 09, xx: 18, v.v. mỗi giờ.

Nó cũng có thể được đọc là "cứ sau chín phút mỗi giờ", ngụ ý thiết lập lại vào đầu giờ.

Vì vậy, hành vi thực tế bạn sẽ thấy tương ứng với tùy chọn B.


Đây là câu trả lời duy nhất dường như thực sự trả lời câu hỏi. Bạn đã thử điều này để đảm bảo?
gparent

Trong vòng 10 phút qua? Không. Trong vòng ba tháng qua? Có, mặc dù không cụ thể trong một khoảng thời gian chín phút.
John

Đừng xem tại sao tôi quan tâm khi bạn làm nhưng chỉ khi. Cảm ơn bạn.
gparent

1
Tôi đã từng có đồng nghiệp cũ tức giận về việc "không, bạn đã không kiểm tra nó, bạn đang dựa vào trí nhớ bị lỗi của mình!" trong những tình huống tương tự (tất nhiên, 5 phút sau họ bỏ đi bực mình sau khi tôi chứng minh rằng nó vẫn hoạt động), vì vậy tôi đã hình thành thói quen phòng ngừa trước điều đó.
John

2
Bước đầu tiên trong thử nghiệm là đảm bảo rằng bạn có cùng nhãn hiệu và phiên bản với khách hàng (trong trường hợp này là Jesse). Tôi không thấy bất kỳ manh mối nào ở đây cho đến khi anh ấy sử dụng cron. (Có khả năng là Vixie Cron và tính năng cơ bản này có khả năng ổn định trên các phiên bản của chương trình đó.)
Kaz

22

Để xác nhận câu trả lời của John, */ntrong cột phút có nghĩa là "khi phút là 0 mod n". Đây là một crontabmục:

*/7 * * * *  date >> /tmp/foo

và đây là đầu ra:

Thu Jan 10 14:49:01 GMT 2013
Thu Jan 10 14:56:01 GMT 2013
Thu Jan 10 15:07:01 GMT 2013

Lưu ý khoảng cách giữa hai lần cuối cùng không phải là bảy phút, vì sau nn: 56 lần */7khớp tiếp theo là `nn + 1: 07.

Vâng, tôi biết rằng những thời điểm đó là trong tương lai (hoặc chúng là khi tôi đăng bài này); Tôi phải lái đồng hồ hệ thống về phía trước khá nhanh để có câu trả lời nhanh.


5
+1 cho nỗ lực :)
Sven
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.