Không, afaik, bạn không thể làm điều đó.
Các trường cron giữ giá trị theo phút, giờ, ngày trong tháng, tháng và ngày trong tuần tương ứng.
10 5 10 * * means run at 5:10 on every 10th of every month.
10 5 * 12 * means run at 5:10 on every day in december
10 5 * * 1 means run at 5:10 every Monday
Bạn có thể làm cho nó chạy trên một chuỗi tháng cụ thể vì định dạng crontab chấp nhận phạm vi. Từ tháng 4 đến tháng 12 sẽ là 4-12 trong trường hợp đó cho trường tháng. Nhưng điều đó không tính đến mong muốn của bạn cho việc này giới hạn trong năm 2009.
Không có cơ chế để đặt ngày bắt đầu và ngừng cho cronjob. Bạn luôn có thể viết kịch bản này tất nhiên. Làm cho cronjob chạy mỗi ngày và kiểm tra ngày hiện tại trước ngày 30/12. Nếu nó là 31/12 làm cho nó loại bỏ chính nó. Hoặc một cái gì đó nhiều hơn suy nghĩ thông qua.
Một crontab của
0 7 * * 6-12 command_X
sẽ làm những gì bạn muốn một phần, nhưng nó sẽ bắt đầu từ 01 tháng sáu và chạy thông qua ngày 31 Tháng Mười Hai. Bỏ qua phần đầu tiên của tháng 6 và ngày 31 tháng 12 sẽ phải được viết trong lệnh X.
Tôi sẽ phải không đồng ý - mặc dù nó phụ thuộc một chút vào việc bạn cho rằng chương trình sẽ phục vụ một mục đích khác hơn khi chạy qua cron (và Unix geeks giả định rằng nó sẽ). Nếu nó phục vụ một mục đích chung, thì hãy xây dựng trong một bộ quy tắc phức tạp để quyết định khi nào nên chạy hoặc phân tích cú pháp tệp cấu hình là quá mức cần thiết và không được đề xuất (trừ khi, có thể, bạn đã có công cụ trong thư viện của mình để thực hiện kiểm tra). Tốt hơn nhiều để cho 'cron' hoặc một biến thể đối phó với điều đó! –
Tôi đã thực sự tìm kiếm một cách để thực hiện một công việc cron cho đến ngày hết hạn, có thể tạo một công việc thứ hai để loại bỏ cả hai, cho đến khi tôi đỏ chữ của bạn về "kịch bản tự quyết định có nên làm bất cứ điều gì hữu ích không". Thay vì tạo ra một loạt các công việc, tôi sẽ chỉ tạo một công việc để gọi kịch bản của tôi mỗi ngày và nó sẽ quyết định nếu có điều gì đó để làm. – StackUnder