hari crontab minggu vs hari bulan?

14

Saya menambahkan ini ke / etc / crontab di beberapa sistem linux & freebsd yang berbeda:

# monthly reboot: 3rd Tuesday of every month
56 07 15-21 * 2 root /sbin/shutdown -r now

Saya ingin reboot pada 3 SELASA setiap bulan. Namun, semua sistem reboot pada Rabu ke-3 bulan ini (tanggal 19).

Apa yang saya lakukan salah?

Pembaruan : Terima kasih atas jawaban Ranon di bawah ini, sepertinya revisi di bawah ini akan berfungsi, adakah yang bisa mengkonfirmasi atau ada cara yang lebih baik untuk melakukannya?

# monthly reboot: 3rd Tuesday of every month
56 07 15-21 * * root test $(date +\%u) -eq 2 && /sbin/shutdown -r now
ane
sumber

Jawaban:

16

Lihatlah man 5 crontab.

Catatan: Hari pelaksanaan perintah dapat ditentukan oleh dua bidang - hari dalam sebulan, dan hari dalam seminggu. Jika kedua bidang dibatasi (yaitu, bukan *), perintah akan dijalankan saat salah satu bidang cocok dengan waktu saat ini. Sebagai contoh, `` 30 4 1,15 * 5 '' akan menyebabkan perintah dijalankan pada jam 4:30 pagi pada tanggal 1 dan 15 setiap bulan, ditambah setiap hari Jumat. Namun, seseorang dapat mencapai hasil yang diinginkan dengan menambahkan tes ke perintah (lihat contoh terakhir dalam CONTOH CRON FILE di bawah).

Jadi server Anda harus memulai ulang setiap hari mulai 15-21 DAN setiap selasa.

Lihatlah contoh halaman manual:

# Run on every second Saturday of the month
0 4 8-14 * *    test $(date +%u) -eq 6 && echo "2nd Saturday"
Jens Erat
sumber
6
Ini serius seperti bug desain. Jika saya ingin setiap hari dari 15-21 DAN setiap Selasa saya akan membuat dua entri crontab terpisah. Harus menggunakan tes terpisah adalah peretasan yang buruk. Yang mengatakan, terima kasih telah memberikan solusi!
Laurence Gonsalves