Điểm:2

định nghĩa ngày crontab chỉ cho Thứ Tư thứ hai của tháng

lá cờ cn

Làm cách nào để xác định ngày crontab chỉ cho Thứ Tư thứ hai (của mỗi tháng)? Tôi sẽ đánh giá cao sự giúp đỡ của bạn.

lá cờ in
Lịch trình cron là một công cụ quá thô cho việc này. Có thể bạn sẽ muốn sử dụng `0 0 * * WED` để chạy một công việc vào Thứ Tư hàng tuần, nhưng trỏ đến một tập lệnh trình bao xác thực tuần trong tháng trước khi chạy một tác vụ nhất định.
Soren A avatar
lá cờ mx
Tôi nghĩ rằng 1. Thứ Tư trong một tháng sẽ luôn nằm trong khoảng từ ngày 1 đến ngày 7 và do đó, Thứ Tư thứ hai trong tháng phải từ ngày 8 đến ngày 14 ... vì vậy đại loại như `0 0 8-14 * WED .....` Hãy làm nó. Tất nhiên, hai giá trị đầu tiên (phút và giờ) có thể là bất kỳ giá trị phút và giờ hợp pháp nào.
lá cờ cn
@SorenA https://crontab.guru/#0_0_8-14_*_wed Chạy từ ngày 8 đến ngày 14 VÀ thứ tư :) Bạn cần điều chỉnh một chút: https://crontab.guru/tips.html Nó có thể yêu cầu 7 dòng ` 0 0 */8 * THỨ TƯ`, `0 0 */9 * THỨ TƯ`, `0 0 */10 * THỨ TƯ`, `0 0 */11 * THỨ TƯ`, `0 0 */12 * THỨ TƯ`, ` 0 0 */13 * THỨ TƯ`, `0 0 */14 * THỨ TƯ`
Điểm:3
lá cờ jp

có thể không phải làm điều này một cách tự nhiên, nhưng một bộ đếm thời gian systemd có thể.

Cú pháp cron 0 0 8-14 * Thứ tư sẽ không phải công việc. Nó sẽ khớp vào thứ Tư hàng tuần cũng như hàng ngày từ ngày 8 đến ngày 14. Như trang man crontab nói

Ngày thực thi lệnh có thể được chỉ định bởi hai trường - ngày trong tháng và ngày trong tuần. Nếu cả hai trường đều bị hạn chế (nghĩa là không bắt đầu bằng *), lệnh sẽ được chạy khi một trong hai trường phù hợp với thời gian hiện tại.

bộ định thời systemd xử lý logic theo cách khác và có thể làm những gì bạn muốn. Cú pháp này sẽ khớp với nửa đêm vào Thứ Tư thứ hai mỗi tháng.

OnCalendar=Wed *-*-8..14 00:00:00

liên kết

lá cờ cn
có cron có thể làm điều này ;-)
elmclose avatar
lá cờ cn
Cảm ơn Andrew, liên kết tốt. Tôi có thể thấy rằng cron một mình là không đủ cho công việc này như tôi nghi ngờ. Tôi cũng có một công việc cần phải hoàn thành vào thứ Sáu cuối cùng của mỗi tháng. Tôi sẽ sử dụng một trong những kiểm tra phụ được đề xuất và lọc vào đúng ngày.
Điểm:3
lá cờ cn

Bạn đã yêu cầu cron nên chỉ sử dụng cron, bạn mới có thể thực hiện việc này bằng cách sử dụng ngày của bash làm thử nghiệm thứ 2:

0 0 8-14 * * [ "$(date '+\%u')" = "3" ] && {your script}
  • Vào mỗi giờ trong các ngày từ 8 đến 14
  • và sau đó kiểm tra thứ tư với ngày của bash. Ngày thứ 3 là thứ tư

Nhận xét từ Soren A là một chút sai (NHƯNG trang hướng dẫn cũng sai). 0 0 8-14 * THỨ TƯ = âVào lúc 00:00 các ngày trong tháng từ ngày 8 đến ngày 14 vào Thứ Tư.â Từ liên kết cuối cùng:

Mẹo 1: Nếu phần ngày trong tháng hoặc ngày trong tuần bắt đầu bằng dấu *, chúng tạo thành một giao điểm. Nếu không, họ thành lập một công đoàn. * * 3 * 1 chạy vào ngày thứ 3 của tháng và vào Thứ Hai (công đoàn), trong khi đó * * */2 * 1 chỉ chạy vào mỗi ngày thứ hai của tháng nếu đó cũng là Thứ Hai (giao điểm). Các trang chủ không đúng về chi tiết này. Thêm thông tin.

elmclose avatar
lá cờ cn
Điều này là rất thanh lịch và nhỏ gọn. Tôi sẽ thử nó. Cảm ơn Rinzwind
Andrew Lowther avatar
lá cờ jp
"Mẹo 1" từ https://crontab.guru/tips.html rất thú vị. Bạn có thể muốn đưa nó vào câu trả lời của mình để hỗ trợ cho yêu cầu "trang người dùng cũng sai".
lá cờ cn
@AndrewLowther vâng, lúc đầu tôi đã nghĩ về điều đó và quyết định không nhưng bạn nói đúng, vì vậy đã thêm: +
elmclose avatar
lá cờ cn
Dấu gạch chéo ngược trong [ "$(date '+\%u')" = "3" ] có cần thiết không?
lá cờ cn
vâng, xem `man 5 crontab` "Dấu phần trăm (%) trong lệnh, trừ khi được thoát bằng dấu gạch chéo ngược (\), sẽ được thay đổi thành ký tự dòng mới và tất cả dữ liệu sau dấu gạch chéo ngược % đầu tiên sẽ được gửi tới lệnh dưới dạng đầu vào tiêu chuẩn."

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.