Panduan Untuk Ekspresi Cron

1. Ikhtisar

Sederhananya, cron adalah utilitas dasar yang tersedia di sistem berbasis Unix. Ini memungkinkan pengguna untuk menjadwalkan tugas untuk dijalankan secara berkala pada tanggal / waktu tertentu. Dan, itu secara alami merupakan alat yang hebat untuk mengotomatiskan banyak proses yang berjalan yang jika tidak membutuhkan campur tangan manusia.

Cron berjalan sebagai proses daemon - ini berarti hanya perlu dijalankan sekali dan akan terus berjalan di latar belakang. Proses ini menggunakan crontab untuk membaca entri jadwal dan memulai tugas.

Seiring waktu, format ekspresi cron diadopsi secara luas dan banyak program serta perpustakaan lain yang memanfaatkannya.

2. Bekerja Dengan Crontab

Sebuah cron jadwal adalah file teks sederhana yang terletak di bawah / var / spool / cron / crontab pada sistem Linux. Kami tidak dapat mengedit file crontab secara langsung ; kita perlu mengaksesnya menggunakan perintah crontab .

Misalnya, untuk membuka file crontab , kita perlu mengaktifkan perintah ini:

crontab -e

Setiap baris di crontab adalah entri dengan ekspresi dan perintah untuk dijalankan:

* * * * * /usr/local/ispconfig/server/server.sh

Entri ini menjalankan skrip yang disebutkan setiap menit.

3. Ekspresi Cron

Mari kita pahami ekspresi cron ; itu terdiri dari lima bidang:

3.1. Karakter Spesial dalam Ekspresi

  • * (semua) - menentukan bahwa peristiwa harus terjadi untuk setiap unit waktu. Misalnya, "*" di bidang < menit> - berarti "untuk setiap menit"
  • ? (any) - digunakan dalam bidang < hari-bulan> dan < hari-minggu> untuk menunjukkan nilai arbitrer - mengabaikan nilai bidang. Misalnya, jika kita ingin mengaktifkan skrip pada "tanggal 5 setiap bulan" terlepas dari hari apa dalam seminggu pada tanggal tersebut, maka kita menetapkan " ? ”Di < hari-of-minggu> lapangan
  • - (range) - menentukan kisaran nilai. Misalnya, " 10-11 " di bidang berarti "jam ke-10 dan ke-11"
  • , (values) - menentukan beberapa nilai. Misalnya, “ MON, WED, FRI” di kolom < day-of-week> berarti hari-hari “Senin, Rabu, dan Jumat”
  • / (increments) - menentukan nilai incremental. Misalnya, "5/15" di bidang < menit> , berarti "5, 20, 35, dan 50 menit dalam satu jam"
  • L (terakhir) - memiliki arti berbeda bila digunakan di berbagai bidang. Misalnya, jika diterapkan di bidang < hari-bulan> , maka itu berarti hari terakhir bulan itu, yaitu "31 Januari" dan seterusnya sesuai dengan bulan kalender. Ini dapat digunakan dengan nilai offset, seperti " L-3 ", yang menunjukkan "hari ketiga hingga terakhir bulan kalender". Di < day-of-week> , ini menentukan "hari terakhir dalam seminggu". Ini juga dapat digunakan dengan nilai lain dalam < day-of-week> , seperti " 6L ", yang menunjukkan "Jumat terakhir"
  • W (hari kerja) - menentukan hari kerja (Senin sampai Jumat) yang terdekat dengan hari tertentu dalam sebulan. Misalnya, jika kita menentukan " 10W " di bidang < hari-bulan> , maka itu berarti "hari kerja mendekati tanggal 10 bulan itu". Jadi jika "10" adalah hari Sabtu, maka pekerjaan akan dipicu pada "9", dan jika "10" adalah hari Minggu, maka pekerjaan akan dipicu pada "11". Jika kita menentukan " 1W " di < hari-bulan-bulan> dan jika "1" adalah Sabtu, maka pekerjaan akan dipicu pada "3" yaitu Senin, dan tidak akan kembali ke bulan sebelumnya
  • # - menentukan kemunculan " N -th" pada hari kerja setiap bulan, misalnya, "Jumat ketiga setiap bulan" dapat diindikasikan sebagai " 6 # 3 "

3.2. Contoh Ekspresi Cron

Mari kita lihat beberapa contoh ekspresi cron dengan menggunakan kombinasi karakter bidang dan spesial:

Pukul 12:00 (siang) setiap hari:

0 12 * * ?

Setiap 5 menit mulai pukul 13.00 dan berakhir pukul 13.55 lalu mulai pukul 18.00 dan berakhir pukul 18.55, setiap hari:

0/5 13,18 * * ?

Setiap menit mulai pukul 13.00 dan berakhir pukul 13.05, setiap hari:

0-5 13 * * ?

Pukul 13:15 dan 13:45 setiap hari Selasa di bulan Juni:

15,45 13 ? 6 Tue

Pukul 09.30 setiap Senin, Selasa, Rabu, Kamis, dan Jumat:

30 9 ? * MON-FRI

Pukul 09.30 pada hari ke 15 setiap bulan:

30 9 15 * ?

Pukul 6 sore pada hari terakhir setiap bulan:

0 18 L * ?

Pukul 6 sore pada hari ke-3 hingga terakhir setiap bulan:

0 18 L-3 * ?

Pukul 10.30 pada hari Kamis terakhir setiap bulan:

30 10 ? * 5L

Pukul 10 pagi pada hari Senin ketiga setiap bulan:

0 10 ? * 2#3

Pukul 12.00 tengah malam setiap hari selama lima hari mulai tanggal 10 setiap bulan:

0 0 10/5 * ?

4. String Khusus Cron

Selain bidang yang ditentukan dalam ekspresi cron, ada juga dukungan untuk beberapa nilai khusus yang telah ditentukan sebelumnya - yang dapat kita gunakan sebagai pengganti bidang:

  • @ reboot - jalankan sekali saat start-up
  • @yearly or @annualy - jalankan setahun sekali
  • @ bulanan - jalankan sebulan sekali
  • @weekly - jalankan seminggu sekali
  • @daily atau @midnight - jalankan sekali sehari
  • @jam - jalankan setiap jam

5. Kesimpulan

Dalam artikel singkat ini, kami telah menjelajahi cron job dan crontab .

Kami juga telah melihat sejumlah contoh ekspresi yang dapat kami gunakan dalam pekerjaan sehari-hari, atau hanya menyimpulkan ekspresi lain dari.