GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana Memberitahu Cron Untuk Menjalankan Perintah Setiap Hari (Ganjil/Genap)?

Saat mengonfigurasi cron untuk menjalankan perintah setiap hari menggunakan bidang "Hari Bulan", seperti:

1 22 */2 * * COMMAND

itu berjalan setiap kali hari dalam sebulan ganjil:1,3,5,7,9 dan seterusnya.

Bagaimana saya bisa mengonfigurasi cron untuk berjalan pada hari-hari dalam sebulan yang bahkan seperti 2,6,8,10 dan seterusnya (tanpa menentukannya secara harfiah, yang bermasalah karena setiap bulan memiliki jumlah hari yang berbeda dalam sebulan)?

Jawaban yang Diterima:

Sintaks yang Anda coba sebenarnya ambigu. Tergantung pada berapa hari dalam sebulan, beberapa bulan akan berjalan pada hari ganjil dan beberapa genap. Ini karena cara menghitungnya mengambil jumlah total kemungkinan dan membaginya. Anda dapat mengganti perilaku aneh ini dengan menentukan rentang hari secara manual dan menggunakan jumlah hari ganjil atau genap. Karena skrip hari genap tidak akan pernah berjalan pada hari ke-31 dari bulan yang lebih panjang, Anda tidak kehilangan apa pun menggunakan 30 hari sebagai dasar untuk hari genap, dan dengan menentukan secara khusus untuk membaginya seolah-olah ada 31 hari Anda dapat memaksa ganjil -eksekusi hari.

Sintaksnya akan terlihat seperti ini:

# Will only run on odd days:
0 0 1-31/2 * * command

# Will only run on even days:
0 0 2-30/2 * * command

Kekhawatiran Anda tentang bulan yang tidak memiliki jumlah hari yang sama tidak penting di sini karena tidak ada bulan yang memiliki LEBIH BANYAK hari dari ini, dan untuk Februari yang buruk, rentang tanggal tidak akan pernah cocok dengan satu atau dua hari terakhir, tetapi tidak ada salahnya memilikinya terdaftar.

Satu-satunya 'gotcha' untuk pendekatan ini adalah jika Anda berada pada siklus hari yang ganjil, bulan-bulan berikutnya dengan 31 hari, perintah Anda juga akan berjalan pada awal bulan. Demikian juga jika Anda memaksakan siklus genap, setiap tahun kabisat akan menyebabkan satu siklus tiga hari pada akhir Februari. Anda tidak dapat benar-benar menghindari fakta bahwa pola reguler "setiap hari" tidak selalu akan jatuh pada hari genap atau ganjil di setiap bulan dan dengan cara apa pun Anda memaksa ini, Anda akan memiliki lari ekstra atau kehilangan lari di antaranya. bulan dengan jumlah hari yang tidak sesuai.

Terkait:Linux – Pintasan untuk meminimalkan semua jendela?
Linux
  1. Cara Menjalankan atau Mengulang Perintah Linux Setiap X Detik Selamanya

  2. Bagaimana cara mengatur tugas cron untuk menjalankan yang dapat dieksekusi setiap jam?

  3. Bagaimana cara menjadwalkan program java untuk dijalankan setiap hari?

  1. Bagaimana Kami Menjalankan Perintah yang Disimpan Dalam Variabel?

  2. Cara mengkonfigurasi tugas cron untuk dijalankan setiap 2 hari pada pukul 11 ​​malam

  3. Bagaimana menjalankan tugas cron pada jam tertentu setiap hari?

  1. Cara Menjalankan Cron Setiap 5 Menit, Detik, Jam, Hari, Bulan

  2. Cara menjalankan pekerjaan cron pada hari-hari tertentu dalam seminggu

  3. Cara menjalankan tugas cron setiap satu jam dan 10 menit