Saya memiliki pengaturan cron untuk menjalankan skrip bash setiap hari pada jam 10 malam. Saya memiliki pengaturan cron lain untuk dijalankan setiap bulan pada tanggal 1 bulan itu. Kedua crons meluncurkan skrip bash, dan satu-satunya yang berbeda dalam skrip bash adalah argumen yang mereka sampaikan ke program java yang mendasarinya (meniru peluncuran baris perintah dari program java).
Masalahnya adalah, saya perlu menonaktifkan cron harian pada tanggal 1 bulan sehingga keduanya tidak mencoba berjalan pada hari yang sama. Apakah ini mungkin dilakukan secara otomatis?
Saya kira saya dapat membuat skrip bash lain untuk mengedit cron sebelum tanggal 1 dan lagi setelah mengatur hal-hal kembali, tetapi ini tampaknya ... najis.
shell-script
cron
SnakeDoc
sumber
sumber
Jawaban:
Dalam nada yang mirip dengan solusi yang diusulkan oleh @StephaneChazelas di komentar Anda dapat menentukan rentang hari di bidang ke-3 sebagai rentang untuk cron yang ingin Anda jalankan setiap hari selain tanggal 1 bulan itu.
Dua entri berikut akan mencapai apa yang Anda cari:
sumber
Cara termudah untuk mengatasinya adalah hanya memiliki satu entri cron. Ubah skrip bash untuk memeriksa tanggal - jika tanggal 1 bulan lalu panggil program java dengan parameter bulanan, atau panggil program dengan params harian.
Mengubah skrip membuat proses lebih sederhana karena skrip sebagai dokumen akan menjelaskan lebih baik apa yang terjadi tanpa memerlukan informasi tambahan dalam tabel cron.
Mod skrip dapat terlihat seperti ini-:
sumber
Saya pikir menggunakan perbandingan integer jika lebih benar
date '+% d' menghasilkan 01 bukan 1 sehingga menggunakan == string comparaison akan salah
sebagai gantinya
sumber