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
-
Daemon 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.
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.
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] |
|
|
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). |
|
Karakter khusus
|
Karakter khusus |
Deskripsi |
Contoh |
|
|
Mencocokkan nilai apa pun untuk bidang tersebut. |
|
|
|
Menentukan rentang. |
|
|
|
Menentukan interval. |
|
|
|
Digunakan dalam bidang hari-dalam-bulan atau hari-dalam-minggu untuk berarti "tidak ada nilai spesifik". |
|
|
|
Digunakan dalam bidang hari-dalam-bulan atau hari-dalam-minggu untuk berarti "terakhir". |
|
|
|
Menentukan hari kerja terdekat (Senin–Jumat) dari tanggal tertentu. Hanya dapat digunakan dalam bidang hari-dalam-bulan. |
|
|
|
Menentukan hari ke-"N" dalam seminggu pada suatu bulan. Digunakan dalam bidang hari-dalam-minggu. |
|
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 pukul 00.00 setiap hari. |
Cocok untuk reset sistem harian atau pencadangan data. |
|
|
Menjalankan tugas pukul 02.00 setiap hari. |
|
|
|
Menjalankan tugas pukul 01.00 setiap hari. |
|
|
|
Menjalankan tugas pukul 06.00 setiap hari. |
Cocok untuk memperbarui laporan data di pagi hari. |
|
|
Menjalankan tugas pukul 12.00 setiap hari. |
Cocok untuk sinkronisasi data siang hari atau email pengingat harian. |
|
|
Menjalankan tugas pukul 18.00 dari Senin hingga Jumat. |
Cocok untuk pencadangan data di akhir hari kerja. |
|
|
Menjalankan tugas pukul 21.00 setiap hari. |
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 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 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
-
Linux/Unix, macOS, dan BSD:
-
Pastikan izin file diatur dengan benar.
-
Perhatikan cara variabel lingkungan diwariskan.
-
Gunakan jalur mutlak.
-
-
Windows Task Scheduler:
-
Menyediakan lebih banyak opsi pemicu.
-
Mendukung kontrol izin detail.
-
Terintegrasi dengan peristiwa sistem.
-
-
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
-
Rekomendasi:
-
Pilih framework yang sesuai dengan skala proyek Anda.
-
Pertimbangkan biaya pemeliharaan dan keakraban tim.
-
Nilai 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.
-
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
-
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. Misalnya,0 5 * * * timeout 300 /path/to/script.shmembatasi 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 -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/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 -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 crontab bergantung pada file
/etc/cron.allowdan/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.
-
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 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:
-
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, penulisannya tidak case-sensitive. Misalnya,
MONsama denganmon. -
Karakter
?digunakan untuk mencegah konflik saat Anda menentukan baik hari-dalam-bulan maupun hari-dalam-minggu. -
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'
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 ? * Ldijalankan 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 yang ditentukan dalam minggu setiap bulan. -
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 menyesuaikan dengan panjang bulan yang berbeda.
-
Karakter ini menangani Februari dengan benar pada tahun kabisat.
-
-
Penggunaan hari-dalam-minggu:
-
Saat menggunakan L dalam bidang Hari-dalam-minggu, atur bidang Hari-dalam-bulan 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.
-
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.
-
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
