Topik ini menjelaskan cron, mulai dari konsep dan sintaks dasar hingga strategi penjadwalan lanjutan beserta kasus penggunaannya. Anda akan mempelajari cara kerja layanan cron serta cara membuat, mengelola, dan men-debug cron job.
Cron basics and components
Apa itu cron?
cron adalah penjadwal tugas (job scheduler) pada sistem Linux dan Unix yang mengeksekusi tugas pada waktu yang telah dijadwalkan. Fitur ini 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.
Demon cron secara berkala memeriksa file-file crontab tersebut, mengurai jadwal dan perintahnya, lalu mengeksekusinya sesuai waktu yang dijadwalkan.
Komponen cron
-
Demon cron: Proses latar belakang yang memeriksa, menjadwalkan, dan mengeksekusi tugas yang ditentukan dalam file
crontab. -
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.
-
-
Sintaks crontab: Setiap baris dalam file
crontabterdiri dari enam bidang: menit, jam, hari-dalam-bulan, bulan, hari-dalam-minggu, dan perintah yang akan dieksekusi.
Cron expression
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.
Gunakan jalur mutlak untuk semua perintah dan file skrip.
Nilai bidang
Tabel berikut menjelaskan rentang nilai yang diterima dan karakter khusus yang didukung untuk setiap bidang dalam ekspresi cron.
|
Bidang |
Wajib |
Rentang nilai |
Karakter khusus |
|
Minute |
Yes |
[0, 59] |
|
|
Hour |
Yes |
[0, 23] |
|
|
day-of-month |
Yes |
[1, 31] |
|
|
Month |
Yes |
[1, 12] atau JAN-DEC |
|
|
day-of-week |
Yes |
Menggunakan rentang standar Unix [0, 6], di mana angka 0 dan 7 sama-sama merepresentasikan Minggu (SUN). |
|
Karakter khusus
|
Karakter khusus |
Deskripsi |
Contoh |
|
|
Mencocokkan nilai apa pun untuk bidang tersebut. |
|
|
|
Menentukan rentang. |
|
|
|
Menentukan interval. |
|
|
|
Digunakan di bidang day-of-month atau day-of-week untuk berarti "tidak ada nilai spesifik". |
|
|
|
Digunakan di bidang day-of-month atau day-of-week untuk berarti "terakhir". |
|
|
|
Menentukan hari kerja terdekat (Senin–Jumat) dari tanggal tertentu. Hanya dapat digunakan di bidang day-of-month. |
|
|
|
Menentukan hari ke-"N" dalam seminggu pada suatu bulan. Digunakan di bidang day-of-week. |
|
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. |
|
|
Menjalankan tugas setiap hari pukul 00.00. |
Cocok untuk reset sistem harian atau pencadangan data. |
|
|
Menjalankan tugas setiap hari pukul 02.00. |
|
|
|
Menjalankan tugas setiap hari pukul 01.00. |
|
|
|
Menjalankan tugas setiap hari pukul 06.00. |
Cocok untuk memperbarui laporan data di pagi hari. |
|
|
Menjalankan tugas setiap hari pukul 12.00. |
Cocok untuk sinkronisasi data tengah hari atau email pengingat harian. |
|
|
Menjalankan tugas pukul 18.00 dari Senin hingga Jumat. |
Cocok untuk pencadangan data di akhir hari kerja. |
|
|
Menjalankan tugas setiap hari pukul 21.00. |
Cocok untuk pembersihan sistem atau pencadangan data transaksi setelah jam kerja. |
|
|
Menjalankan tugas pukul 00.00 pada hari pertama setiap bulan. |
Cocok untuk menghasilkan laporan keuangan, penjualan, atau bisnis bulanan. |
|
|
Menjalankan tugas pukul 00.00 pada 1 Januari dan 1 Juli. |
Cocok untuk tugas penting semesteran, seperti pengarsipan data atau restrukturisasi organisasi. |
|
|
Menjalankan tugas pukul 14.15 pada hari pertama setiap bulan. |
Cocok untuk memantau dan menerapkan patch keamanan pada sistem TI. |
|
|
Menjalankan tugas pukul 00.00 setiap hari Minggu. |
Cocok untuk pembersihan dan optimasi data akhir pekan. |
|
|
Menjalankan tugas pukul 00.00 pada 1 Januari. |
Cocok untuk menjalankan skrip startup tahunan penting, seperti reset sistem atau pengarsipan data kritis. |
|
|
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 antar sistem operasi
Fitur dasar
|
Fitur |
Linux/Unix cron |
macOS cron |
BSD cron |
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 |
Linux/Unix cron |
macOS cron |
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 kerja ke-N dalam bulan) |
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 |
Linux/Unix cron |
macOS cron |
BSD cron |
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
-
Linux/Unix, macOS, dan BSD:
-
Pastikan izin file diatur dengan benar.
-
Pahami cara variabel lingkungan diwariskan.
-
Gunakan jalur mutlak.
-
-
Windows Task Scheduler:
-
Menyediakan lebih banyak opsi pemicu.
-
Mendukung kontrol izin yang detail.
-
Terintegrasi dengan peristiwa sistem.
-
-
Kompatibilitas lintas platform:
-
Gunakan fitur minimum yang umum untuk tugas terjadwal lintas platform.
-
Gunakan format waktu dasar dan hindari karakter khusus.
-
Pertimbangkan alat penjadwalan lintas platform seperti Jenkins.
-
Perbandingan antar 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 |
Linux cron |
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 bulan) |
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 halus - Untuk kebutuhan penjadwalan kompleks |
|
Linux cron |
- 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 kontainer - Untuk aplikasi cloud-native - Untuk pekerjaan yang memerlukan ketersediaan tinggi dan skalabilitas |
Pertimbangan
-
Rekomendasi:
-
Pilih framework yang sesuai dengan skala proyek Anda.
-
Pertimbangkan biaya pemeliharaan dan keakraban tim.
-
Evaluasi kebutuhan performa dan keandalan Anda.
-
-
Pertimbangan kompatibilitas:
-
Sintaks ekspresi cron dapat sedikit berbeda antar framework.
-
Periksa kompatibilitas ekspresi saat migrasi.
-
Pertimbangkan perbedaan dalam penanganan zona waktu.
-
-
Pemantauan dan pemeliharaan:
-
Siapkan sistem pemantauan yang komprehensif.
-
Kumpulkan dan analisis log.
-
Definisikan 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
-
Edit cron job: Buka terminal dan jalankan perintah
crontab -euntuk mengedit cron job pengguna saat ini. -
Tambahkan cron job: Tambahkan baris berikut ke file crontab:
0 23 * * * cp /path/to/original/file.txt /path/to/backup/file_backup.txtPenjelasan:
-
0 23 * * *: Menjalankan tugas setiap hari pukul 23.00. -
cp /path/to/original/file.txt /path/to/backup/file_backup.txt: Menyalin filefile.txtke direktori tujuan dan menyimpannya sebagaifile_backup.txt.
-
-
Simpan dan tutup:
-
Di editor Nano, tekan
Ctrl+X, tekanYuntuk mengonfirmasi, lalu tekanEnteruntuk menyimpan dan keluar. -
Di editor Vi atau Vim, masukkan
:wqlalu tekanEnteruntuk 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
timeoutdalam perintah cron job Anda untuk membatasi waktu eksekusi maksimum skrip. Contohnya,0 5 * * * timeout 300 /path/to/script.shmembatasi eksekusi skrip hingga 300 detik.
-
Perintah uji sederhana
Sebelum mengonfigurasi cron job 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.
-
Kiat troubleshooting lainnya
-
Pengalihan output: Arahkan output dan error cron job Anda ke file log untuk mempermudah troubleshooting. Contohnya:
30 4 * * * /path/to/job.sh > /path/to/job.log 2>&1 -
Notifikasi email: Jika cron job menghasilkan output atau error, demon cron mengirimkan email notifikasi. 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 bila memungkinkan.
-
Mengedit dan melihat cron job: Gunakan
crontab -euntuk mengedit cron job dancrontab -luntuk 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.shuntuk 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/cronatau /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 lagi bahwa bidang waktu diatur dengan benar. Urutan bidangnya adalah:
minute hour day-of-month month day-of-week command
Pastikan setiap bidang benar.
Di sebagian besar sistem Linux, layanan cron (demon) 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 Unix-like 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 -lmungkin 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
-
Buka editor crontab: Jalankan perintah
crontab -e. Ini membuka file crontab pengguna saat ini di editor teks default, sepertiviataunano. -
Hapus tugas tertentu: Di editor, temukan baris untuk tugas yang ingin Anda hapus dan hapus baris tersebut. Di
viatauvim, Anda dapat memindahkan kursor ke baris tersebut dan menekandd. Dinano, pindah ke baris tersebut dan tekanCtrl+Kuntuk memotongnya. -
Simpan dan keluar:
-
Di
viatauvim, ketik:wqdan tekan Enter untuk menyimpan perubahan dan keluar. -
Di
nano, tekanCtrl+X, laluYuntuk mengonfirmasi penyimpanan, dan akhirnya tekan Enter untuk keluar.
-
-
Untuk menghapus semua cron job pengguna saat ini, gunakan perintah berikut.
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"
-
Hubungkan ke instance ECS sebagai pengguna root.
Untuk informasi lebih lanjut, lihat Login ke instance Linux menggunakan Workbench.
-
Jalankan perintah berikut untuk memeriksa keberadaan file
cron.allowataucron.deny:find /etc/cron.allow find /etc/cron.denyIzin pengguna untuk menjalankan perintah
crontabbergantung pada file/etc/cron.allowdan /etc/cron.deny, seperti dijelaskan di bawah ini.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.
Note
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.
Note
File cron.allow memiliki prioritas lebih tinggi daripada file cron.deny. Dalam kasus ini, file cron.deny tidak berpengaruh.
-
Berdasarkan kebutuhan Anda, edit file
cron.allowataucron.deny.-
Jika file
cron.allowtidak ada dan username pengguna non-root tercantum dalam filecron.deny, hapus username tersebut daricron.denydan simpan file tersebut. -
Jika file
cron.allowada, tambahkan username pengguna non-root ke filecron.allowdan simpan file tersebut.
-
-
Mulai ulang layanan cron agar perubahan diterapkan:
systemctl restart crond.service -
Beralih ke pengguna non-root dan jalankan perintah
crontablagi untuk memverifikasi bahwa perintah tersebut dapat dieksekusi dengan sukses.
Rentang bidang cron dan penggunaannya
-
Bidang Day-of-week adalah bidang kelima dalam ekspresi cron dan menentukan hari dalam minggu kapan tugas dijalankan.
-
Angka: 1–7 (1 = Minggu, 2 = Senin, ..., 7 = Sabtu)
-
Singkatan: SUN, MON, TUE, WED, THU, FRI, SAT
-
-
Contoh format umum:
-
MON-FRI: dijalankan setiap hari dari Senin hingga Jumat. -
MON,WED,FRI: dijalankan setiap Senin, Rabu, dan Jumat. -
MON-WED,SAT: dijalankan dari Senin hingga Rabu dan juga pada Sabtu. -
2-6: dijalankan dari Senin hingga Jumat (menggunakan angka). -
SUN,SAT: dijalankan setiap akhir pekan (Sabtu dan Minggu).
-
-
Penggunaan lanjutan:
-
SUN#1: pada Minggu pertama setiap bulan. -
6L: pada Jumat terakhir setiap bulan. -
*/2: setiap dua hari. -
MON#2: pada Senin kedua setiap bulan.
-
-
Catatan:
-
Saat menggunakan singkatan hari dalam minggu, huruf tidak bersifat case-sensitive. Misalnya,
MONsama denganmon. -
Karakter
?digunakan untuk mencegah konflik saat Anda menentukan baik day-of-month maupun day-of-week. -
Saat menggunakan
Ldan#, perhatikan bahwa tidak semua implementasi cron mendukungnya. Pastikan kombinasi tersebut tidak menghasilkan tanggal yang tidak valid. -
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'
Di bidang day-of-month
-
Digunakan sendiri:
-
L= Hari terakhir dalam bulan. -
Contoh:
0 0 L * ?dijalankan pada tengah malam hari terakhir setiap bulan. -
Karakter ini secara otomatis menangani panjang bulan yang bervariasi, termasuk tahun kabisat.
-
-
Digunakan dengan offset:
-
L-n= Hari ke-n sebelum hari terakhir dalam bulan. -
Contoh:
0 0 L-2 * ?dijalankan pada tengah malam hari ketiga dari akhir setiap bulan.
-
Di bidang day-of-week
-
Digunakan sendiri:
-
L= Sabtu (hari terakhir dalam minggu). -
Contoh:
0 0 ? * Ldijalankan pada tengah malam setiap Sabtu.
-
-
Digunakan dengan angka:
-
nL= Hari kerja n terakhir dalam bulan. -
Contoh:
6Lmenunjukkan Jumat terakhir dalam bulan. -
Contoh:
2Lmenunjukkan Senin terakhir dalam bulan.
-
-
Digunakan dengan singkatan hari dalam minggu:
-
XXXL= Hari terakhir dalam minggu yang ditentukan pada bulan tersebut. -
Contoh:
FRILmenunjukkan Jumat terakhir dalam bulan. -
Contoh:
MONLmenunjukkan Senin terakhir dalam bulan.
-
Catatan:
-
Hindari kombinasi:
-
Karakter L tidak boleh digunakan dengan rentang atau daftar lainnya.
-
Contoh salah:
L,15atauL-3,15.
-
-
Adaptasi terhadap hari dalam bulan:
-
L secara otomatis beradaptasi dengan panjang bulan yang bervariasi.
-
Karakter ini menangani Februari dengan benar pada tahun kabisat.
-
-
Penggunaan hari dalam minggu:
-
Saat menggunakan L di bidang Day-of-week, atur bidang Day-of-month ke
?. -
Praktik ini mencegah potensi konflik tanggal.
-
-
Kondisi eksekusi:
-
Jika hari terakhir dalam minggu yang ditentukan tidak ada dalam bulan tertentu, tugas tidak akan dijalankan.
-
Misalnya, 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.
-
Hubungkan ke instance ECS Anda.
Untuk informasi lebih lanjut, lihat Metode koneksi untuk instance ECS.
-
Jalankan perintah berikut untuk memeriksa penggunaan disk:
df -hSistem 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
