All Products
Search
Document Center

Elastic Compute Service:Cron jobs

Last Updated:Jun 22, 2026

Topik ini menjelaskan cron, mulai dari konsep dan sintaks dasar hingga strategi penjadwalan tingkat lanjut beserta kasus penggunaannya. Anda akan mempelajari cara kerja layanan cron serta cara membuat, mengelola, dan men-debug cron job.

Dasar-dasar dan komponen cron

Apa itu cron?

cron adalah penjadwal tugas (job scheduler) pada sistem Linux dan Unix yang mengeksekusi tugas pada waktu yang telah dijadwalkan. Cron memungkinkan pengguna menjalankan skrip, perintah, atau perangkat lunak secara otomatis pada interval tertentu. cron sangat ideal untuk tugas berulang, seperti pencadangan data dan pembaruan sistem.

Cara kerja cron

cron menggunakan file crontab (cron table). File konfigurasi ini berisi perintah beserta jadwal eksekusinya masing-masing. Setiap pengguna dapat memiliki file crontab sendiri di direktori home-nya, dan terdapat pula file crontab tingkat sistem untuk tugas yang dikelola administrator.

Daemon cron secara berkala memeriksa file-file crontab ini, mengurai jadwal dan perintahnya, lalu mengeksekusinya sesuai waktu yang dijadwalkan.

Komponen cron

  1. Daemon cron: Proses latar belakang yang memeriksa, menjadwalkan, dan mengeksekusi tugas yang ditentukan dalam file crontab.

  2. File crontab:

    • Crontab tingkat pengguna: Setiap pengguna dapat mengedit tugas terjadwalnya sendiri dengan menjalankan perintah crontab -e. Tugas-tugas ini hanya berlaku untuk pengguna saat ini.

    • Crontab tingkat sistem: Terletak di /etc/crontab, file ini biasanya dikelola oleh administrator sistem untuk tugas tingkat sistem.

  3. Sintaks crontab: Setiap baris dalam file crontab terdiri dari enam bidang: menit, jam, hari-dalam-bulan, bulan, hari-dalam-minggu, dan perintah yang akan dieksekusi.

Ekspresi cron

Contoh berikut menunjukkan entri sederhana dalam file crontab:

# .---------------- menit
# |  .------------- jam
# |  |  .---------- hari dalam bulan 
# |  |  |  .------- bulan 
# |  |  |  |  .---- hari dalam minggu (Minggu=0 atau 7)
# |  |  |  |  |
# *  *  *  *  * nama-pengguna  perintah yang akan dieksekusi
  30 04 *  *  *   root     /path/to/daily_backup.sh

Cron job ini dikonfigurasi untuk menjalankan skrip daily_backup.sh sebagai pengguna root setiap hari pukul 04.30 pagi.

Penting

Gunakan jalur mutlak untuk semua perintah dan file skrip.

Nilai bidang

Tabel ini menjelaskan rentang nilai yang diterima dan karakter khusus yang didukung untuk setiap bidang dalam ekspresi cron.

Bidang

Wajib

Rentang nilai

Karakter khusus

Menit

Ya

[0, 59]

*, -, /

Jam

Ya

[0, 23]

*, -, /

hari-dalam-bulan

Ya

[1, 31]

*, -, /, ?, L, W

Bulan

Ya

[1, 12] atau JAN-DEC

*, -, /

hari-dalam-minggu

Ya

Menggunakan rentang standar Unix [0, 6], di mana nilai 0 dan 7 sama-sama merepresentasikan hari Minggu (SUN).

*, -, /, ?, L, #

Karakter khusus

Karakter khusus

Deskripsi

Contoh

*

Mencocokkan nilai apa pun untuk bidang tersebut.

0 * * * * command menjalankan perintah tersebut pada awal setiap jam.

-

Menentukan rentang.

0 1-3 * * * command menjalankan perintah tersebut pukul 01.00, 02.00, dan 03.00 setiap hari.

/

Menentukan interval.

*/15 * * * * command menjalankan perintah tersebut setiap 15 menit.

?

Digunakan dalam bidang hari-dalam-bulan atau hari-dalam-minggu untuk berarti "tidak ada nilai spesifik".

0 0 2 ? * * command menjalankan perintah tersebut pada tanggal 2 setiap bulan, terlepas dari hari dalam minggunya.

L

Digunakan dalam bidang hari-dalam-bulan atau hari-dalam-minggu untuk berarti "terakhir".

0 0 L * * command menjalankan perintah tersebut pada hari terakhir setiap bulan.

W

Menentukan hari kerja terdekat (Senin–Jumat) dari tanggal tertentu. Hanya dapat digunakan dalam bidang hari-dalam-bulan.

0 0 15W * * command menjalankan perintah tersebut pada hari kerja terdekat dengan tanggal 15 setiap bulan.

#

Menentukan hari ke-"N" dalam seminggu pada suatu bulan. Digunakan dalam bidang hari-dalam-minggu.

0 0 * * 3#2 command menjalankan perintah tersebut pada hari Rabu kedua setiap bulan.

Catatan

Jangan menggabungkan parameter L dengan daftar atau rentang, karena hal ini dapat menyebabkan error penguraian atau konflik logika.

Ekspresi Cron umum

Ekspresi cron

Deskripsi

Skenario

* * * * *

Menjalankan tugas setiap menit.

Gunakan ini untuk memverifikasi konfigurasi cron Anda.

0 0 * * *

Menjalankan tugas pukul 00.00 setiap hari.

Cocok untuk reset sistem harian atau pencadangan data.

0 2 * * *

Menjalankan tugas pukul 02.00 setiap hari.

0 1 * * *

Menjalankan tugas pukul 01.00 setiap hari.

0 6 * * *

Menjalankan tugas pukul 06.00 setiap hari.

Cocok untuk memperbarui laporan data di pagi hari.

0 12 * * *

Menjalankan tugas pukul 12.00 setiap hari.

Cocok untuk sinkronisasi data siang hari atau email pengingat harian.

0 18 * * 1-5

Menjalankan tugas pukul 18.00 dari Senin hingga Jumat.

Cocok untuk pencadangan data di akhir hari kerja.

0 21 * * *

Menjalankan tugas pukul 21.00 setiap hari.

Cocok untuk pembersihan sistem atau pencadangan data transaksi setelah jam kerja.

0 0 1 * *

Menjalankan tugas pukul 00.00 pada hari pertama setiap bulan.

Cocok untuk menghasilkan laporan keuangan, penjualan, atau bisnis bulanan.

0 0 1 1,7 *

Menjalankan tugas pukul 00.00 pada 1 Januari dan 1 Juli.

Cocok untuk tugas penting semesteran, seperti pengarsipan data atau restrukturisasi organisasi.

15 14 1 * *

Menjalankan tugas pukul 14.15 pada hari pertama setiap bulan.

Cocok untuk memantau dan menerapkan patch keamanan pada sistem TI.

0 0 * * 0

Menjalankan tugas pukul 00.00 setiap Minggu.

Cocok untuk pembersihan dan optimasi data akhir pekan.

0 0 1 1 *

Menjalankan tugas pukul 00.00 pada 1 Januari.

Cocok untuk menjalankan skrip startup tahunan penting, seperti reset sistem atau pengarsipan data kritis.

*/10 * * * *

Menjalankan tugas setiap 10 menit.

Cocok untuk pemantauan berkelanjutan terhadap sistem atau layanan kritis.

Untuk lebih banyak contoh dan editor interaktif, kunjungi https://crontab.guru/.

Perbandingan cron

Perbandingan lintas sistem operasi

Fitur dasar

Fitur

cron Linux/Unix

cron macOS

cron BSD

Windows Task Scheduler

(Task Scheduler)

Interval eksekusi minimum

1 menit

1 menit

1 menit

1 menit

Lokasi file konfigurasi default

/etc/crontab

/usr/lib/cron/tabs/

/etc/crontab

N/A

Dukungan konfigurasi tingkat pengguna

Didukung

Didukung

Didukung

N/A

Karakter khusus

Karakter khusus

cron Linux/Unix

cron macOS

BSD cron

Windows Task Scheduler (Task Scheduler)

* (semua nilai)

Didukung

Didukung

Didukung

Didukung

, (daftar nilai)

Didukung

Didukung

Didukung

Didukung

- (rentang)

Didukung

Didukung

Didukung

Didukung

/ (langkah)

Didukung

Didukung

Didukung

Didukung

L (terakhir)

Didukung oleh beberapa distribusi

Tidak didukung

Tidak didukung

N/A

W (hari kerja)

Didukung oleh beberapa distribusi

Tidak didukung

Tidak didukung

N/A

# (Hari ke-N tertentu dalam sebulan)

Didukung oleh beberapa distribusi

Tidak didukung

Tidak didukung

N/A

? (nilai apa saja)

Didukung oleh beberapa distribusi

Tidak didukung

Tidak didukung

N/A

Fitur lanjutan

Fitur

cron Linux/Unix

macOS cron

cron BSD

Windows Task Scheduler (Task Scheduler)

Dukungan variabel lingkungan

Dukungan terbatas

Dukungan terbatas

Dukungan terbatas

Didukung penuh

Penanganan tugas yang terlewat

Tidak ada penanganan otomatis

Tidak ada penanganan otomatis

Tidak ada penanganan otomatis

Kebijakan yang dapat dikonfigurasi

Pencatatan log

syslog

syslog

syslog

Event Viewer

Penjadwalan Tingkat Kedua

Tidak didukung

Tidak didukung

Tidak didukung

Didukung

Konfigurasi GUI

Tidak tersedia

Tidak tersedia

Tidak tersedia

Tersedia

Ketergantungan tugas

Tidak didukung

Tidak didukung

Tidak didukung

Didukung

Pemicu jaringan

Tidak didukung

Tidak didukung

Tidak didukung

Didukung

Integrasi manajemen daya

Tidak didukung

Tidak didukung

Tidak didukung

Didukung

Pertimbangan

  1. Linux/Unix, macOS, dan BSD:

    • Pastikan izin file diatur dengan benar.

    • Perhatikan cara variabel lingkungan diwariskan.

    • Gunakan jalur mutlak.

  2. Windows Task Scheduler:

    • Menyediakan lebih banyak opsi pemicu.

    • Mendukung kontrol izin detail.

    • Terintegrasi dengan peristiwa sistem.

  3. Kompatibilitas lintas platform:

    • Gunakan fitur umum minimum untuk tugas terjadwal lintas platform.

    • Gunakan format waktu dasar dan hindari karakter khusus.

    • Pertimbangkan alat penjadwalan lintas platform seperti Jenkins.

Perbandingan lintas framework

Sintaks dasar

Fitur

Spring Framework

Quartz

Linux cron

Jenkins

Kubernetes CronJob

Penjadwalan Tingkat Kedua

Didukung (opsional)

Didukung

Tidak didukung

Didukung

Tidak didukung

Bidang tahun

Opsional

Didukung

Tidak didukung

Didukung

Tidak didukung

Interval minimum

1 detik

1 detik

1 menit

1 detik

1 menit

Dukungan zona waktu

Didukung

Didukung

Menggunakan zona waktu sistem

Didukung

Didukung

Karakter khusus

Karakter khusus

Spring Framework

Quartz

cron Linux

Jenkins

Kubernetes CronJob

* (semua nilai)

Didukung

Didukung

Didukung

Didukung

Didukung

, (daftar nilai)

Didukung

Didukung

Didukung

Didukung

Didukung

- (rentang)

Didukung

Didukung

Didukung

Didukung

Didukung

/ (langkah)

Didukung

Didukung

Didukung

Didukung

Didukung

? (nilai apa saja)

Didukung

Didukung

Tidak didukung

Didukung

Tidak didukung

L (terakhir)

Didukung

Didukung

Didukung sebagian

Didukung

Tidak didukung

W (hari kerja)

Didukung

Didukung

Didukung sebagian

Didukung

Tidak didukung

# (hari kerja ke-N dalam sebulan)

Didukung

Didukung

Tidak didukung

Didukung

Tidak didukung

Kasus penggunaan

Framework

Kasus penggunaan

Spring Framework

- Ideal untuk integrasi proyek Java

- Untuk proyek yang memerlukan dukungan transaksi

- Untuk integrasi mendalam dengan ekosistem Spring

Quartz

- Sebagai sistem penjadwalan mandiri

- Untuk kontrol tugas detail

- Untuk kebutuhan penjadwalan kompleks

cron Linux

- Untuk tugas tingkat sistem sederhana

- Di lingkungan mesin tunggal

- Untuk tugas terjadwal dasar

Jenkins

- Untuk pipeline CI/CD

- Untuk alur kerja kompleks

- Untuk alur kerja yang memerlukan UI manajemen

Kubernetes CronJob

- Untuk tugas di lingkungan terkontainerisasi

- Untuk aplikasi cloud-native

- Untuk pekerjaan yang memerlukan ketersediaan tinggi dan skalabilitas

Pertimbangan

  1. Rekomendasi:

    • Pilih framework yang sesuai dengan skala proyek Anda.

    • Pertimbangkan biaya pemeliharaan dan keakraban tim.

    • Nilai kebutuhan performa dan keandalan Anda.

  2. Pertimbangan kompatibilitas:

    • Sintaks ekspresi cron dapat sedikit berbeda antar framework.

    • Periksa kompatibilitas ekspresi saat migrasi.

    • Pertimbangkan perbedaan dalam penanganan zona waktu.

  3. Pemantauan dan pemeliharaan:

    • Siapkan sistem pemantauan yang komprehensif.

    • Kumpulkan dan analisis log.

    • Tentukan rencana pemulihan bencana.

Kasus penggunaan

Pencadangan otomatis file teks tertentu ke direktori lain setiap hari pukul 23.00 untuk menjaga keamanan data dan mencegah kehilangan.

Pertimbangan

  • Pastikan jalur file sumber (/path/to/original/file.txt) dan jalur backup (/path/to/backup/file_backup.txt) benar.

  • Verifikasi bahwa direktori tujuan sudah ada. Jika belum, buat direktorinya atau tambahkan perintah pembuatan direktori ke cron job.

  • Pastikan pengguna yang menjalankan cron job memiliki izin baca pada file sumber dan izin tulis pada direktori tujuan.

  • Periksa secara berkala file backup dan log untuk memverifikasi bahwa cron job berjalan dengan benar dan file backup valid.

Prosedur

  1. Edit cron job: Buka terminal dan jalankan perintah crontab -e untuk mengedit cron job pengguna saat ini.

  2. Tambahkan cron job: Tambahkan baris berikut ke file crontab:

       0 23 * * * cp /path/to/original/file.txt /path/to/backup/file_backup.txt

    Penjelasan:

    • 0 23 * * *: Menjalankan tugas setiap hari pukul 23.00.

    • cp /path/to/original/file.txt /path/to/backup/file_backup.txt: Menyalin file file.txt ke direktori tujuan dan menyimpannya sebagai file_backup.txt.

  3. Simpan dan tutup:

    • Di editor Nano, tekan Ctrl+X, tekan Y untuk mengonfirmasi, lalu tekan Enter untuk menyimpan dan keluar.

    • Di editor Vi atau Vim, masukkan :wq lalu tekan Enter untuk menyimpan dan keluar.

Pertanyaan umum

Lihat log cron

Eksekusi cron job biasanya dicatat dalam log sistem. Log ini menunjukkan apakah cron job dipicu:

grep CRON /var/log/syslog

Perintah ini menampilkan semua log terkait cron, termasuk catatan eksekusi cron job.

Timeout cron job

  • Solusi:

    • Optimalkan skrip: Perbaiki logika skrip untuk mengurangi waktu eksekusinya.

    • Pisahkan tugas: Jika tugas dapat dipisah, bagi menjadi beberapa tugas yang lebih kecil.

    • Gunakan timeout: Gunakan utilitas timeout dalam perintah cron job Anda untuk membatasi waktu eksekusi maksimum skrip. Misalnya, 0 5 * * * timeout 300 /path/to/script.sh membatasi eksekusi skrip hingga 300 detik.

Perintah uji sederhana

Sebelum mengonfigurasi cron job yang kompleks, gunakan perintah uji sederhana untuk memverifikasi bahwa cron job dipicu dengan benar. Misalnya, atur tugas untuk menambahkan tanggal dan waktu saat ini ke file setiap menit:

* * * * * date >> /path/to/date_output.txt

Setelah beberapa menit, periksa file date_output.txt untuk memverifikasi bahwa timestamp baru ditambahkan setiap menit.

Pengalihan output untuk pengujian

Untuk menguji cron job, tambahkan pengalihan output ke perintah. Ini mengarahkan output standar (stdout) dan error standar (stderr) ke file log, sehingga Anda dapat memeriksa apakah skrip dieksekusi dan meninjau output-nya.

30 4 * * * /path/to/your-script.sh > /path/to/logfile.log 2>&1

Periksa file /path/to/logfile.log untuk meninjau output skrip dan error apa pun.

Frekuensi eksekusi cron job

  • Rekomendasi konfigurasi:

    • Hindari frekuensi berlebihan: Menetapkan jadwal eksekusi terlalu sering dapat merusak performa sistem.

    • Konfigurasikan sesuai kebutuhan: Tugas rutin sederhana seperti pencadangan mungkin hanya perlu dijalankan sekali sehari, sedangkan tugas pemantauan mungkin perlu dijalankan setiap jam atau lebih sering.

    • Pertimbangkan beban sistem: Jadwalkan tugas yang intensif sumber daya untuk dijalankan pada periode beban sistem rendah.

Tips troubleshooting lainnya

  • Pengalihan output: Arahkan output dan error cron job Anda ke file log untuk mempermudah troubleshooting. Contoh: 30 4 * * * /path/to/job.sh > /path/to/job.log 2>&1

  • Notifikasi email: Jika cron job menghasilkan output atau error, daemon cron mengirim notifikasi email. Pastikan layanan email sistem Anda dikonfigurasi dengan benar, atau konfigurasikan secara eksplisit pengiriman email dalam cron job.

  • Masalah jalur: Jalur mutlak umumnya lebih andal daripada jalur relatif. Gunakan jalur mutlak dalam cron job Anda jika memungkinkan.

  • Mengedit dan melihat cron job: Gunakan crontab -e untuk mengedit cron job dan crontab -l untuk melihat semua cron job pengguna saat ini. Ini membantu memastikan konfigurasi cron job Anda benar.

Cron job tidak dieksekusi sesuai jadwal

  • Penyebab dan solusi:

    • Ekspresi cron salah: Periksa format ekspresi cron. Pastikan bidang waktu dan tanggal benar.

    • Izin skrip tidak mencukupi: Pastikan skrip memiliki izin eksekusi yang diperlukan. Gunakan chmod +x /path/to/script.sh untuk memberikannya.

    • Masalah lingkungan: Cron job berjalan di lingkungan minimal dan mungkin tidak memuat konfigurasi shell lengkap pengguna Anda. Gunakan jalur mutlak untuk perintah dalam skrip Anda, atau atur secara eksplisit variabel lingkungan yang diperlukan dalam skrip itu sendiri.

    • Periksa log: Periksa log cron, yang biasanya terletak di /var/log/cron atau /var/log/syslog (tergantung sistem), untuk informasi pemicu dan error potensial. Periksa juga log pengalihan output yang telah Anda konfigurasi.

Konfirmasi konfigurasi cron job

Periksa sintaks cron: Gunakan crontab -e untuk mengedit file crontab Anda dan pastikan kembali bahwa bidang waktu diatur dengan benar. Urutan bidangnya adalah:

menit jam hari-dalam-bulan bulan hari-dalam-minggu perintah

Pastikan setiap bidang benar.

Di sebagian besar sistem Linux, layanan cron (daemon) harus berjalan agar tugas dieksekusi. Anda dapat memeriksa status layanan dengan salah satu perintah berikut:

sudo service cron status

Atau:

sudo systemctl status cron

Jika layanan tidak berjalan, mulai layanan tersebut:

sudo service cron start

Atau:

sudo systemctl start cron

Berikan izin eksekusi skrip: Pastikan file skrip Anda memiliki izin eksekusi. Berikan izin tersebut menggunakan perintah berikut:

chmod +x /path/to/your-script.sh

Lihat semua cron job untuk pengguna

Perintah crontab -l menampilkan cron job untuk pengguna saat ini. cron adalah penjadwal tugas berbasis waktu di sistem operasi mirip Unix yang secara otomatis menjalankan perintah atau skrip terjadwal.

  • Catatan:

    • Hanya cron job untuk pengguna saat ini yang ditampilkan. Untuk melihat cron job pengguna lain, Anda biasanya memerlukan hak akses root atau izin sistem yang sesuai.

    • Jika tidak ada cron job yang dikonfigurasi untuk pengguna tersebut, perintah crontab -l mungkin tidak menghasilkan output atau menampilkan pesan bahwa crontab kosong.

Daftar cron job dalam crontab

Untuk menampilkan cron job pengguna saat ini, jalankan perintah crontab -l. Perintah ini menampilkan semua cron job yang didefinisikan dalam file crontab pengguna saat ini.

  • Catatan:

    • Izin: Pengguna biasa hanya dapat melihat dan mengedit cron job mereka sendiri. Pengguna root atau pengguna dengan izin yang sesuai dapat melihat dan mengedit cron job semua pengguna.

    • Lingkungan: Perintah yang dieksekusi oleh cron berjalan di lingkungan minimal, di mana banyak variabel lingkungan khusus pengguna mungkin tidak dimuat secara default. Oleh karena itu, gunakan jalur mutlak untuk perintah dan file.

Hapus cron job tertentu

  1. Buka editor crontab: Jalankan perintah crontab -e. Ini membuka file crontab pengguna saat ini di editor teks default, seperti vi atau nano.

  2. Hapus tugas tertentu: Di editor, temukan baris untuk tugas yang ingin Anda hapus dan hapus baris tersebut. Di vi atau vim, Anda dapat memindahkan kursor ke baris tersebut dan menekan dd. Di nano, pindah ke baris tersebut dan tekan Ctrl+K untuk memotongnya.

  3. Simpan dan keluar:

    • Di vi atau vim, ketik :wq dan tekan Enter untuk menyimpan perubahan dan keluar.

    • Di nano, tekan Ctrl+X, lalu Y untuk mengonfirmasi penyimpanan, dan akhirnya tekan Enter untuk keluar.

  4. Untuk menghapus semua cron job pengguna saat ini, gunakan perintah berikut.

Peringatan

Perintah ini menghapus semua tugas secara instan tanpa prompt konfirmasi. Gunakan dengan sangat hati-hati.

crontab -r
  • Catatan:

    • Backup: Sebelum mengedit atau menghapus cron job, sebaiknya backup crontab Anda. Anda dapat menyimpan tugas saat ini ke file menggunakan crontab -l > crontab_backup.txt.

    • Peringatan: Menghapus atau memodifikasi cron job dapat memengaruhi operasi sistem atau fungsionalitas aplikasi. Pastikan Anda memahami tujuan tugas tersebut sebelum memodifikasinya.

Atasi error "not allowed to use crontab"

  1. Hubungkan ke instance ECS sebagai pengguna root.

    Untuk informasi lebih lanjut, lihat Login ke instance Linux menggunakan Workbench.

  2. Jalankan perintah berikut untuk memeriksa keberadaan file cron.allow atau cron.deny:

    find /etc/cron.allow
    find /etc/cron.deny

    Izin pengguna untuk menjalankan perintah crontab bergantung pada file /etc/cron.allow dan /etc/cron.deny, seperti dijelaskan di bawah ini.

    Cron.allow exists

    Cron.deny exists

    Authorized crontab users

    Cron.allow exists

    Cron.deny exists

    Authorized crontab users

    No

    No

    Hanya pengguna root yang dapat menggunakan perintah crontab.

    Yes

    No

    Hanya pengguna yang tercantum dalam file cron.allow yang dapat menggunakan perintah crontab.

    No

    Yes

    Semua pengguna yang tidak tercantum dalam file cron.deny dapat menggunakan perintah crontab.

    Catatan

    Jika file cron.deny kosong, semua pengguna dapat menggunakan perintah crontab.

    Yes

    Yes

    Hanya pengguna yang tercantum dalam file cron.allow yang dapat menggunakan perintah crontab.

    Catatan

    File cron.allow memiliki prioritas lebih tinggi daripada file cron.deny. Dalam kasus ini, file cron.deny tidak berpengaruh.

  3. Berdasarkan kebutuhan Anda, edit file cron.allow atau cron.deny.

    • Jika file cron.allow tidak ada dan username pengguna non-root tercantum dalam file cron.deny, hapus username tersebut dari cron.deny dan simpan file tersebut.

    • Jika file cron.allow ada, tambahkan username pengguna non-root ke file cron.allow dan simpan file tersebut.

  4. Mulai ulang layanan cron agar perubahan diterapkan:

    systemctl restart crond.service
  5. Beralih ke pengguna non-root dan jalankan perintah crontab lagi untuk memverifikasi bahwa perintah tersebut dapat dijalankan dengan sukses.

Rentang dan penggunaan bidang cron

  • Bidang Hari-dalam-minggu adalah bidang kelima dalam ekspresi cron dan menentukan hari dalam seminggu saat tugas dijalankan.

    • Angka: 1–7 (1 = Minggu, 2 = Senin, ..., 7 = Sabtu)

    • Singkatan: SUN, MON, TUE, WED, THU, FRI, SAT

  • Contoh format umum:

    1. MON-FRI: dijalankan setiap hari dari Senin hingga Jumat.

    2. MON,WED,FRI: dijalankan setiap Senin, Rabu, dan Jumat.

    3. MON-WED,SAT: dijalankan dari Senin hingga Rabu dan juga pada Sabtu.

    4. 2-6: dijalankan dari Senin hingga Jumat (menggunakan angka).

    5. SUN,SAT: dijalankan setiap akhir pekan (Sabtu dan Minggu).

  • Penggunaan lanjutan:

    1. SUN#1: pada Minggu pertama setiap bulan.

    2. 6L: pada Jumat terakhir setiap bulan.

    3. */2: setiap dua hari.

    4. MON#2: pada Senin kedua setiap bulan.

  • Catatan:

    1. Saat menggunakan singkatan hari-dalam-minggu, penulisannya tidak case-sensitive. Misalnya, MON sama dengan mon.

    2. Karakter ? digunakan untuk mencegah konflik saat Anda menentukan baik hari-dalam-bulan maupun hari-dalam-minggu.

    3. Saat menggunakan L dan #, perhatikan bahwa tidak semua implementasi cron mendukungnya. Pastikan kombinasi tersebut tidak menghasilkan tanggal yang tidak valid.

    4. Perhatikan bahwa saat menggunakan angka untuk hari dalam minggu, angka 1 merepresentasikan Minggu. Hal ini mungkin tidak intuitif karena banyak sistem menggunakan 0 atau 7 untuk Minggu. Selalu periksa dokumentasi sistem Anda.

Menggunakan karakter 'L'

Dalam bidang hari-dalam-bulan
  • Digunakan sendiri:

    • L = Hari terakhir dalam bulan.

    • Contoh: 0 0 L * ? dijalankan tengah malam pada hari terakhir setiap bulan.

    • Karakter ini secara otomatis menangani bulan dengan panjang berbeda, termasuk tahun kabisat.

  • Digunakan dengan offset:

    • L-n = Hari ke-n sebelum hari terakhir dalam bulan.

    • Contoh: 0 0 L-2 * ? dijalankan tengah malam pada hari ketiga terakhir setiap bulan.

Dalam bidang hari-dalam-minggu
  • Digunakan sendiri:

    • L = Sabtu (hari terakhir dalam minggu).

    • Contoh: 0 0 ? * L dijalankan tengah malam setiap Sabtu.

  • Digunakan dengan angka:

    • nL = Hari kerja n terakhir dalam bulan.

    • Contoh: 6L menunjukkan Jumat terakhir dalam bulan.

    • Contoh: 2L menunjukkan Senin terakhir dalam bulan.

  • Digunakan dengan singkatan hari-dalam-minggu:

    • XXXL = Hari terakhir yang ditentukan dalam minggu setiap bulan.

    • Contoh: FRIL menunjukkan Jumat terakhir dalam bulan.

    • Contoh: MONL menunjukkan Senin terakhir dalam bulan.

Catatan:
  1. Hindari kombinasi:

    • Karakter L tidak boleh digunakan dengan rentang atau daftar lainnya.

    • Contoh salah: L,15 atau L-3,15.

  2. Adaptasi terhadap hari dalam bulan:

    • L secara otomatis menyesuaikan dengan panjang bulan yang berbeda.

    • Karakter ini menangani Februari dengan benar pada tahun kabisat.

  3. Penggunaan hari-dalam-minggu:

    • Saat menggunakan L dalam bidang Hari-dalam-minggu, atur bidang Hari-dalam-bulan ke ?.

    • Praktik ini mencegah potensi konflik tanggal.

  4. Kondisi eksekusi:

    • Jika hari terakhir dalam minggu yang ditentukan tidak ada dalam bulan tertentu, tugas tidak akan dijalankan.

    • Contohnya, Februari mungkin tidak memiliki Jumat kelima.

Mengatasi kesalahan "errors in crontab file"

Untuk mengatasi masalah ini, login ke instance untuk memperbaiki format file crontab atau lakukan resizing disk cloud jika disk penuh.

  1. Hubungkan ke instance ECS Anda.

    Untuk informasi lebih lanjut, lihat Metode koneksi untuk instance ECS.

  2. Periksa apakah format cron job dalam file crontab sudah benar.

    • Jika formatnya benar, lanjutkan ke langkah 3.

    • Jika formatnya salah, perbaiki seperti berikut:

      image.png

  3. Jalankan perintah berikut untuk memeriksa penggunaan disk:

    df -h

    Sistem menampilkan informasi serupa berikut. Misalnya, Use% menunjukkan penggunaan partisi /dev/xvda1.

    Jika penggunaan disk mendekati 100%, ruang disk tidak mencukupi. Kami menyarankan melakukan resizing disk cloud. Untuk informasi lebih lanjut, lihat Ikhtisar resizing disk cloud.

    [root@ ~]# df -h
    Filesystem Size Used Avail Use% Mounted on
    /dev/xvda1 20G 2.7G 17G 15% /
    tmpfs 498M 0 498M 0% /dev/shm