Jawaban
Ubah logika cron Tuesday Anda untuk mengeksekusi setiap minggu sejak zaman .
Mengetahui bahwa ada 604800 detik dalam seminggu (mengabaikan perubahan DST dan detik kabisat, terima kasih), dan menggunakan tanggal GNU:
0 6 * * Tue expr `date +\%s` / 604800 \% 2 >/dev/null || /scripts/fortnightly.sh
Selain itu
Aritmatika kalender membuat frustrasi.
Jawaban @xahtep luar biasa tetapi, seperti yang dicatat @Doppelganger dalam komentar, jawaban itu akan gagal pada batas tahun tertentu. Tak satu pun dari date
penentu "minggu tahun" utilitas dapat membantu di sini. Beberapa hari Selasa di awal Januari pasti akan mengulang paritas minggu dari hari Selasa terakhir di tahun sebelumnya:05-01-2016 (%V), 02-01-2018 (%U), dan 01-01-2019 (%W) .
jawaban pilcrow bagus. Namun, ini menghasilkan skrip fortnightly.sh yang berjalan setiap genap minggu (sejak zaman). Jika Anda memerlukan skrip untuk dijalankan pada ganjil minggu, Anda dapat mengubah sedikit jawabannya:
0 6 * * Tue expr \( `date +\%s` / 604800 + 1 \) \% 2 > /dev/null || /scripts/fortnightly.sh
Mengubah 1 menjadi 0 akan memindahkannya kembali ke minggu genap.
Bagaimana dengan ini, itu menyimpannya di crontab
meskipun tidak ditentukan secara persis di lima kolom pertama:
0 6 * * Tue expr `date +\%W` \% 2 > /dev/null || /scripts/fortnightly.sh