Topik ini menjelaskan konsep dasar dan sintaksis cron serta menyediakan ekspresi cron umum beserta skenario penggunaannya. Topik ini membantu Anda memahami mekanisme kerja cron dan cara membuat, mengelola, serta men-debug pekerjaan cron.
Prinsip dasar dan komponen cron
Apa itu cron?
Cron adalah program yang digunakan untuk menjalankan pekerjaan pada jadwal tertentu di sistem operasi Linux dan Unix. Cron memungkinkan Anda menjalankan skrip, perintah, atau perangkat lunak secara otomatis sesuai jadwal. Cron cocok untuk tugas-tugas yang perlu dilakukan secara berkala, seperti pencadangan data dan pembaruan sistem.
Mekanisme kerja cron
Cron berjalan berdasarkan file crontab, yaitu file konfigurasi yang berisi serangkaian perintah dan jadwal eksekusi perintah tersebut. Setiap akun dapat memiliki file crontab mereka sendiri di direktori home mereka. File crontab tingkat sistem digunakan untuk pekerjaan yang dieksekusi pada tingkat administrator.
Daemon cron secara berkala memeriksa file crontab, menguraikan jadwal dan perintah yang didefinisikan dalam file, lalu menjalankan perintah sesuai jadwal.
Komponen cron
Daemon Cron: Program latar belakang yang bertanggung jawab untuk secara teratur memeriksa, menjadwalkan, dan mengeksekusi pekerjaan yang ditentukan dalam file crontab.
File Crontab:
File Crontab Tingkat Akun: Setiap akun dapat mengedit pekerjaan cron mereka sendiri di file crontab tingkat akun dengan menjalankan perintah
crontab -e. Pekerjaan hanya valid untuk akun saat ini.File Crontab Tingkat Sistem: Disimpan di direktori
/etc/crontab. Dalam kebanyakan kasus, file crontab tingkat sistem dikelola oleh administrator sistem dan digunakan untuk mengeksekusi pekerjaan tingkat sistem.
Sintaksis Crontab: Setiap baris dalam file crontab terdiri dari enam bidang yang mewakili menit, jam, hari dalam sebulan, bulan, hari dalam seminggu, dan perintah yang akan dijalankan.
Ekspresi Cron
Untuk membantu Anda lebih memahami cara kerja cron, kode sampel berikut memberikan contoh file crontab sederhana:
# .---------------- menit
# | .------------- jam
# | | .---------- hari dalam sebulan
# | | | .------- bulan
# | | | | .---- hari dalam seminggu (Minggu=0 atau 7)
# | | | | |
# * * * * * nama-pengguna perintah yang akan dijalankan // Tentukan jalur perintah atau skrip yang dijalankan oleh pekerjaan cron.
30 04 * * * root /path/to/daily_backup.shDalam contoh ini, konfigurasi pekerjaan menunjukkan bahwa sistem menjalankan skrip daily_backup.sh sebagai pengguna root pada pukul 04:30 setiap hari.
Pastikan Anda menentukan jalur absolut untuk semua instruksi perintah atau file skrip.
Nilai valid dari bidang
Tabel berikut menjelaskan rentang valid dan karakter khusus yang didukung oleh bidang yang digunakan untuk mendefinisikan jadwal dalam ekspresi cron.
Bidang | Wajib | Rentang valid | Karakter khusus yang didukung |
Menit | Ya | [0, 59] |
|
Jam | Ya | [0, 23] |
|
Hari-dalam-sebulan | Ya | [1, 31] |
|
Bulan | Ya | [1, 12] atau [JAN, DEC] |
|
Hari-dalam-seminggu | Ya | [0, 6], di mana 0 mewakili Minggu dan 6 mewakili Sabtu. 7 juga bisa mewakili Minggu. |
|
Arti dan contoh karakter khusus
Karakter Khusus | Arti | Contoh |
| Mencakup semua nilai. |
|
| Menentukan rentang. |
|
| Menentukan interval. |
|
| Menentukan nilai arbitrer dan hanya dapat digunakan di bidang Hari-dalam-sebulan dan Hari-dalam-seminggu. |
|
| Dapat digunakan di bidang Hari-dalam-sebulan atau Hari-dalam-seminggu untuk menentukan hari terakhir dalam sebulan atau minggu. |
|
| Dapat digunakan hanya di bidang Hari-dalam-sebulan untuk menentukan hari kerja yang paling dekat dengan tanggal tertentu. |
|
| Dapat digunakan di bidang Hari-dalam-seminggu untuk menentukan hari dalam seminggu dan minggu dalam sebulan. |
|
Jika Anda menentukan karakter L dalam ekspresi cron, jangan tentukan daftar atau rentang dalam ekspresi tersebut. Jika Anda menentukan karakter L dan daftar atau rentang dalam ekspresi cron, kesalahan penguraian atau konflik logis mungkin terjadi.
Ekspresi cron umum
Ekspresi Cron | Arti | Skenario |
| Jalankan pekerjaan cron setiap menit. | Uji dan periksa apakah konfigurasi cron diaktifkan dan dieksekusi sesuai harapan. |
| Jalankan pekerjaan cron pada pukul 00:00 setiap hari. | Reset atau cadangkan data server setiap hari untuk memastikan keamanan data. |
| Jalankan pekerjaan cron pada pukul 02:00 setiap hari. | |
| Jalankan pekerjaan cron pada pukul 01:00 setiap hari. | |
| Jalankan pekerjaan cron pada pukul 06:00 setiap hari. | Perbarui laporan data setiap pagi agar anggota tim dapat melihat informasi terbaru. |
| Jalankan pekerjaan cron pada pukul 12:00 setiap hari. | Sinkronkan data atau kirim email pengingat harian di perusahaan pada tengah hari. |
| Jalankan pekerjaan cron pada pukul 18:00 dari Senin hingga Jumat setiap minggu. | Cadangkan data sebelum akhir setiap hari kerja untuk memastikan semua data hari itu tersimpan. |
| Jalankan pekerjaan cron pada pukul 21:00 setiap hari. | Bersihkan sistem bisnis atau cadangkan data transaksi hari itu setelah berakhirnya operasi komersial. |
| Jalankan pekerjaan cron pada pukul 00:00 hari pertama setiap bulan. | Hasilkan laporan keuangan, penjualan, atau bisnis lainnya di awal setiap bulan. |
| Jalankan pekerjaan cron pada 1 Januari dan 1 Juli setiap tahun. | Jalankan pekerjaan penting, seperti pengarsipan data semesteran atau restrukturisasi organisasi. |
| Jalankan pekerjaan cron pada pukul 14:15 hari pertama setiap bulan. | Monitor dan perbarui patch keamanan untuk sistem TI untuk memastikan keamanan sistem. |
| Jalankan pekerjaan cron pada pukul 00:00 setiap Minggu. | Bersihkan dan optimalkan data selama akhir pekan untuk menyiapkan lingkungan bersih untuk minggu baru. |
| Jalankan pekerjaan cron pada 1 Januari setiap tahun. | Otomatiskan skrip startup tahunan penting di awal setiap tahun, seperti mereset sistem atau mengarsipkan data penting. |
| Jalankan pekerjaan cron setiap 10 menit. | Terus pantau sistem atau layanan kritis untuk memastikan performa dan keandalan. |
Untuk informasi lebih lanjut tentang cron, kunjungi https://crontab.guru/.
Perbandingan cron
Perbandingan cron di antara sistem operasi utama
Perbandingan fitur dasar cron
Fitur | Cron Linux atau Unix | Cron macOS | Cron BSD | Windows Task Scheduler
|
Interval eksekusi minimum | 1 menit | 1 menit | 1 menit | 1 menit |
Jalur default file crontab | /etc/crontab | /usr/lib/cron/tabs/ | /etc/crontab | N/A |
Konfigurasi tingkat pengguna | Didukung | Didukung | Didukung | N/A |
Perbandingan karakter khusus dalam ekspresi cron
Karakter khusus | Linux atau Unix cron | macOS cron | BSD cron | Windows Task Scheduler |
* (semua nilai) | Didukung | Didukung | Didukung | Didukung |
, (daftar nilai) | Didukung | Didukung | Didukung | Didukung |
- (rentang) | Didukung | Didukung | Didukung | Didukung |
/ (ukuran langkah) | Didukung | Didukung | Didukung | Didukung |
L (terakhir) | Didukung oleh distribusi tertentu | Tidak didukung | Tidak didukung | N/A |
W (hari kerja) | Didukung oleh distribusi tertentu | Tidak didukung | Tidak didukung | N/A |
# (hari kerja ke-N) | Didukung oleh distribusi tertentu | Tidak didukung | Tidak didukung | N/A |
? (tidak ditentukan) | Didukung oleh distribusi tertentu | Tidak didukung | Tidak didukung | N/A |
Perbandingan fitur cron
Fitur | Linux atau Unix cron | macOS cron | BSD cron | Windows Task Scheduler |
Variabel lingkungan | Dukungan terbatas | Dukungan terbatas | Dukungan terbatas | Didukung |
Pemrosesan tugas yang terlewat | Tidak diproses secara otomatis | Tidak diproses secara otomatis | Tidak diproses secara otomatis | Kebijakan pemrosesan dapat dikonfigurasi |
Log | syslog | syslog | syslog | Event Viewer |
Penjadwalan tingkat detik | Tidak didukung | Tidak didukung | Tidak didukung | Didukung |
GUI | Tidak ada | Tidak ada | Tidak ada | Tersedia |
Dependensi 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, atau BSD:
Konfigurasikan izin file dengan benar untuk mencegah izin berlebihan atau tidak cukup.
Catat warisan variabel lingkungan.
Kami menyarankan Anda menggunakan jalur absolut.
Windows Task Scheduler:
Menyediakan lebih banyak opsi pemicu.
Mendukung kontrol akses granular yang lebih baik.
Dapat diintegrasikan dengan peristiwa sistem.
Kompatibilitas Lintas Platform:
Catat irisan minimum fitur antar platform saat menyusun pekerjaan cron lintas platform.
Kami menyarankan Anda menggunakan format waktu dasar dan tidak menggunakan karakter khusus.
Gunakan alat penjadwalan lintas platform, seperti Jenkins.
Perbandingan cron di antara framework utama
Perbandingan sintaksis dasar
Fitur | Spring Framework | Quartz | Linux cron | Jenkins | Kubernetes CronJob |
Dukungan Tingkat Kedua | (Opsional) Didukung | 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 |
Zona waktu | Didukung | Didukung | Zona waktu sistem | Didukung | Didukung |
Perbandingan karakter khusus dalam ekspresi cron
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 |
/ (ukuran langkah) | Didukung | Didukung | Didukung | Didukung | Didukung |
? (tidak ditentukan) | Didukung | Didukung | Tidak didukung | Didukung | Tidak didukung |
L (terakhir) | Didukung | Didukung | Sebagian didukung | Didukung | Tidak didukung |
W (hari kerja) | Didukung | Didukung | Sebagian didukung | Didukung | Tidak didukung |
# (hari ke-N) | Didukung | Didukung | Tidak didukung | Didukung | Tidak didukung |
Rekomendasi skenario
Framework | Skenario |
Spring Framework | - Integrasi proyek Java Skenario yang memerlukan transaksi - Integrasi mendalam dengan ekosistem Spring |
Quartz | - Sistem penjadwalan independen - Skenario yang memerlukan kontrol tugas granular - Persyaratan penjadwalan kompleks |
Linux cron | - Tugas sistem sederhana - Lingkungan mandiri - Tugas penjadwalan dasar |
Jenkins | - Skenario integrasi kontinu dan pengiriman/penerapan kontinu (CI/CD) - Alur kerja kompleks - Skenario yang memerlukan manajemen visual |
Kubernetes CronJob | - Lingkungan berbasis kontainer - Aplikasi cloud-native - Skenario yang memerlukan ketersediaan tinggi dan skalabilitas |
Pertimbangan
Saran:
Pilih framework yang sesuai berdasarkan skala proyek.
Pertimbangkan biaya pemeliharaan dan keakraban tim.
Evaluasi persyaratan performa dan keandalan.
Kompatibilitas:
Ekspresi cron dapat bervariasi berdasarkan framework.
Catat kompatibilitas ekspresi cron dengan framework saat Anda memigrasikan ekspresi tersebut ke framework.
Catat perbedaan dalam penanganan zona waktu.
Pemantauan dan Pemeliharaan:
Bangun mekanisme pemantauan yang komprehensif.
Kumpulkan dan analisis log.
Buat kebijakan pemulihan kesalahan.
Studi kasus
Secara otomatis mencadangkan file teks di satu direktori ke direktori lain pada pukul 23:00 setiap malam untuk memastikan kontinuitas dan keamanan data.
Pertimbangan
Pastikan Anda menentukan direktori sumber dan tujuan dengan benar. Dalam contoh ini,
/path/to/original/file.txtdigunakan sebagai direktori sumber dan/path/to/backup/file_backup.txtdigunakan sebagai direktori tujuan.Periksa apakah direktori tujuan yang ditentukan ada. Jika direktori tujuan tidak ada, Anda harus terlebih dahulu membuat direktori atau menambahkan perintah untuk membuat direktori ke pekerjaan cron.
Pastikan akun Anda memiliki izin untuk membaca file sumber dan menulis data ke direktori tujuan.
Secara berkala periksa file cadangan dan log untuk memeriksa apakah pekerjaan cron berjalan sesuai harapan dan menghasilkan file cadangan yang valid.
Prosedur
Buka terminal dan masukkan perintah
crontab -euntuk mengedit pekerjaan cron di akun Anda.Tambahkan baris berikut ke file crontab akun Anda untuk menambahkan pekerjaan cron:
0 23 * * * cp /path/to/original/file.txt /path/to/backup/file_backup.txtDeskripsi:
0 23 * * *menentukan bahwa pekerjaan dijalankan pada pukul 23:00 setiap hari.cp /path/to/original/file.txt /path/to/backup/file_backup.txtmenentukan bahwa filefile.txtdisalin ke direktori tujuan.
Simpan dan tutup file crontab.
Jika Anda menggunakan editor nano, tekan
Ctrl+XdanYuntuk mengonfirmasi dan menyimpan perubahan, lalu tekan tombolEnteruntuk menutup file.Jika Anda menggunakan editor vi atau vim, masukkan
:wqdan tekan tombolEnteruntuk menyimpan dan menutup file.
FAQ
Bagaimana cara melihat log cron?
Dalam banyak kasus, eksekusi pekerjaan cron dicatat dalam log sistem. Anda dapat memeriksa apakah pekerjaan cron dipicu berdasarkan log cron. Untuk melihat log cron, jalankan perintah berikut:
grep CRON /var/log/syslogKeluaran perintah menampilkan semua log terkait cron, termasuk catatan eksekusi pekerjaan.
Bagaimana cara menyelesaikan masalah timeout eksekusi pekerjaan cron?
Jika eksekusi pekerjaan cron mengalami timeout, gunakan solusi berikut untuk menyelesaikan masalah:
Optimalkan logika perintah untuk mengurangi waktu eksekusi.
Jika pekerjaan cron dapat dibagi, bagi pekerjaan menjadi beberapa pekerjaan yang lebih kecil.
Tambahkan perintah
timeoutke Bidang Perintah untuk mengubah waktu eksekusi maksimum pekerjaan cron. Contohnya: tambahkan konfigurasi0 5 * * * timeout 300 /path/to/script.shuntuk membatasi waktu eksekusi maksimum pekerjaan hingga 300 detik.
Bagaimana cara menggunakan perintah uji sederhana?
Sebelum Anda mengonfigurasi pekerjaan cron yang kompleks, gunakan perintah uji sederhana untuk memeriksa apakah pekerjaan cron dapat dipicu sesuai harapan. Sebagai contoh, jalankan perintah berikut untuk mengonfigurasi pekerjaan cron yang menulis waktu saat ini ke file setiap menit:
* * * * * date >> /path/to/date_output.txtBuka file date_output.txt setelah beberapa menit dan periksa apakah catatan waktu baru ditulis ke file setiap menit.
Bagaimana cara mengarahkan keluaran dan kesalahan ke file log?
Tambahkan konfigurasi pengalihan ke ekspresi cron untuk mengarahkan keluaran dan kesalahan ke file log. Dengan cara ini, Anda dapat memeriksa apakah pekerjaan cron dieksekusi sesuai harapan dan melihat keluaran serta kesalahan yang terjadi selama eksekusi.
30 4 * * * /path/to/your-script.sh > /path/to/logfile.log 2>&1Periksa file /path/to/logfile.log untuk melihat keluaran dan kesalahan pekerjaan cron selama eksekusi.
Bagaimana cara mengonfigurasi frekuensi pekerjaan cron?
Referensi saran berikut untuk mengonfigurasi frekuensi pekerjaan cron:
Untuk mencegah pekerjaan cron memengaruhi performa sistem, kami menyarankan Anda untuk tidak menentukan frekuensi yang terlalu tinggi untuk pekerjaan tersebut. Tentukan frekuensi yang sesuai untuk pekerjaan cron berdasarkan karakteristik pekerjaan.
Konfigurasikan frekuensi pekerjaan cron berdasarkan kebutuhan bisnis Anda. Pekerjaan harian sederhana, seperti pencadangan, mungkin hanya perlu dijalankan sekali sehari, sedangkan pekerjaan pemantauan tertentu mungkin perlu dijalankan setiap jam atau lebih sering.
Pertimbangkan beban sistem. Jalankan pekerjaan yang intensif sumber daya selama periode beban rendah.
Apa operasi yang dapat saya lakukan untuk memfasilitasi pemecahan masalah cron?
Arahkan keluaran dan kesalahan pekerjaan cron ke file log untuk memfasilitasi pelacakan masalah. Contoh:
30 4 * * * /path/to/job.sh > /path/to/job.log 2>&1.Konfigurasikan daemon cron untuk mengirim notifikasi melalui email ketika pekerjaan cron mengalami pengecualian atau menghasilkan keluaran. Pastikan pengaturan email sistem dikonfigurasi dengan benar atau secara eksplisit konfigurasikan notifikasi email untuk pekerjaan cron.
Dalam banyak sistem Linux, jalur absolut lebih andal daripada jalur relatif. Kami menyarankan Anda menggunakan jalur absolut dalam pekerjaan cron.
Untuk mengedit pekerjaan cron, jalankan perintah
crontab -e. Untuk melihat semua pekerjaan cron di akun Anda, jalankan perintahcrontab -l. Anda dapat memeriksa apakah pekerjaan cron dikonfigurasi dengan benar.
Mengapa pekerjaan cron tidak dijalankan sesuai jadwal?
Penyebab dan solusi:
Jika terdapat kesalahan dalam ekspresi cron, periksa ekspresi cron dan perbaiki kesalahan. Pastikan pengaturan jadwal sudah benar.
Jika akun Anda tidak memiliki izin yang cukup untuk menjalankan pekerjaan cron, berikan akun Anda izin yang diperlukan untuk menjalankan pekerjaan cron dengan menjalankan perintah
chmod +x /path/to/script.sh.Jika terjadi masalah lingkungan, pekerjaan cron mungkin gagal memuat konfigurasi lingkungan lengkap akun Anda. Pastikan Anda menentukan jalur lengkap perintah dalam pekerjaan cron atau secara eksplisit mengonfigurasi variabel lingkungan dalam perintah.
Jika masalah lain terjadi, periksa log cron untuk mengidentifikasi masalah. Lokasi log cron bervariasi berdasarkan konfigurasi sistem. Dalam banyak kasus, log cron disimpan di direktori
/var/log/cron. Jika Anda mengarahkan keluaran dan kesalahan pekerjaan cron ke file tertentu, lihat log di file tersebut untuk memeriksa apakah pekerjaan cron dipicu sesuai harapan dan apakah pesan kesalahan dikembalikan.
Bagaimana cara memastikan pekerjaan cron akan berlaku?
Periksa sintaksis ekspresi cron. Pastikan sintaksis waktu dan tanggal sudah benar. Jalankan perintah crontab -e untuk mengedit pekerjaan cron dan periksa apakah semua bidang dikonfigurasi dengan benar. Ekspresi cron mencakup bidang berikut:
<Menit> <Jam> <Hari-dalam-sebulan> <Bulan> <Hari-dalam-seminggu> <Perintah>Pastikan setiap bidang sudah benar.
Dalam banyak sistem operasi Linux, layanan cron hanya dapat menjalankan pekerjaan jika layanan tersebut sedang berjalan. Anda dapat menjalankan perintah berikut untuk memeriksa status layanan cron:
sudo service cron statusAtau:
sudo systemctl status cron Jika layanan cron belum dimulai, jalankan perintah berikut untuk memulai layanan:
sudo service cron startAtau:
sudo systemctl start cronBerikan izin eksekusi pada file skrip yang Anda tentukan dalam pekerjaan cron. Jalankan perintah berikut:
chmod +x /path/to/your-script.shBagaimana cara melihat semua pekerjaan cron di akun saya?
Jalankan perintah crontab -l untuk melihat semua pekerjaan cron di akun Anda. Ini adalah perintah umum di Linux dan Unix. Cron adalah penjadwal pekerjaan berbasis waktu yang memungkinkan Anda menjalankan skrip atau perintah secara otomatis sesuai jadwal.
Catat hal-hal berikut:
Perintah sebelumnya hanya menampilkan pekerjaan cron di akun saat ini. Untuk melihat pekerjaan cron di akun lain, Anda harus mendapatkan izin sistem yang diperlukan.
Jika tidak ada pekerjaan cron yang dikonfigurasi di akun Anda, perintah
crontab -lmungkin tidak menampilkan informasi.
Bagaimana cara melihat pekerjaan cron yang dapat diakses oleh akun saya?
Untuk melihat pekerjaan cron yang dapat diakses oleh akun Anda, Anda dapat menjalankan perintah crontab -l. Jika akun Anda tidak memiliki izin root atau izin untuk melihat dan mengedit pekerjaan cron akun lain, perintah sebelumnya hanya menampilkan pekerjaan cron yang dimiliki oleh akun Anda. Jika akun Anda memiliki izin root atau izin untuk melihat dan mengedit pekerjaan cron akun lain, Anda dapat menjalankan perintah sebelumnya dan menentukan nama pengguna akun dalam perintah untuk melihat semua pekerjaan cron yang dimiliki oleh akun yang ditentukan.
Catat hal-hal berikut:
Anda dapat menggunakan akun reguler untuk melihat dan mengedit hanya pekerjaan cron yang dimiliki oleh akun tersebut.Anda dapat menggunakan akun root atau akun yang diberi izin cukup untuk melihat dan mengedit pekerjaan cron semua akun.
Perintah dalam pekerjaan cron yang didefinisikan dalam file crontab dijalankan dalam lingkungan yang disederhanakan. Secara default, sejumlah variabel lingkungan mungkin tidak dimuat. Kami menyarankan Anda menggunakan jalur lengkap dalam perintah.
Bagaimana cara mengedit file crontab untuk menghapus pekerjaan cron?
Jalankan perintah
crontab -euntuk membuka file crontab akun Anda di editor default. Editor default bisa berupaviataunano.Di editor, temukan baris yang berisi pekerjaan cron yang ingin Anda hapus, lalu hapus baris tersebut. Di editor
viatauvim, pindahkan kursor ke baris dan tekandduntuk menghapus baris. Di editornano, pindahkan kursor ke baris menggunakan tombol panah, lalu tekan tombol Hapus untuk menghapus baris atau tekanCtrl+Kuntuk memotong baris.Simpan dan tutup file crontab.
Di editor
viatauvim, masukkan:wqdan tekan tombol Enter untuk menyimpan perubahan dan menutup file.Di editor
nano, tekanCtrl+X, masukkanYuntuk mengonfirmasi dan menyimpan perubahan, lalu tekan tombol Enter untuk menutup file.
Jika Anda ingin menghapus semua pekerjaan cron dari akun Anda, jalankan perintah berikut.
Perintah ini menghapus semua pekerjaan cron dari akun Anda tanpa meminta konfirmasi. Lanjutkan dengan hati-hati.
crontab -rCatat hal-hal berikut:
Sebelum Anda mengedit atau menghapus pekerjaan cron, kami menyarankan Anda mencadangkan file crontab Anda. Anda dapat menjalankan perintah
crontab -l > crontab_backup.txtuntuk mencadangkan pekerjaan cron di file crontab Anda ke file lain.Saat Anda menghapus atau mengedit pekerjaan cron di file crontab Anda, sistem operasi atau aplikasi dalam sistem operasi mungkin terpengaruh. Sebelum Anda menghapus atau mengedit pekerjaan cron, pastikan Anda sepenuhnya menyadari dampak potensial dari operasi tersebut.
Apa yang harus dilakukan jika pesan kesalahan "You (*) are not allowed to use this program (crontab)" muncul saat saya menjalankan perintah crontab sebagai pengguna non-root di Linux?
Hubungkan ke instance ECS Linux sebagai pengguna root.
Untuk informasi lebih lanjut, lihat Gunakan Workbench untuk terhubung ke instance Linux melalui SSH.
Jalankan perintah berikut untuk memeriksa apakah file
cron.allowdancron.denyada:find /etc/cron.allow find /etc/cron.denyTabel berikut menjelaskan hubungan antara keberadaan file
cron.allowdancron.denydan izin pengguna untuk menjalankan perintah crontab.Apakah file cron.allow ada
Apakah file cron.deny ada
Pengguna yang dapat menjalankan perintah crontab
Tidak
Tidak
Hanya pengguna root yang dapat menjalankan perintah crontab.
Ya
Tidak
Hanya pengguna yang ditentukan dalam file cron.allow yang dapat menjalankan perintah crontab.
Tidak
Ya
Pengguna yang tidak ditentukan dalam file cron.deny dapat menjalankan perintah crontab.
CatatanJika file cron.deny kosong, semua pengguna dapat menjalankan perintah crontab.
Ya
Ya
Hanya pengguna yang ditentukan dalam file cron.allow yang dapat menjalankan perintah crontab.
CatatanFile cron.allow memiliki prioritas lebih tinggi daripada file cron.deny. Dalam hal ini, file cron.deny tidak berlaku.
Modifikasi file
cron.allowataucron.denyberdasarkan skenario bisnis Anda:Jika file
cron.allowtidak ada dan filecron.denyberisi nama pengguna dari pengguna non-root, hapus nama pengguna tersebut, lalu simpan filecron.deny.Jika file
cron.allowada, tambahkan pengguna non-root ke filecron.allow, lalu simpan file.
Jalankan perintah berikut untuk memulai ulang layanan cron:
systemctl restart crond.serviceBeralih ke pengguna non-root dan jalankan perintah
crontablagi.
Nilai apa yang dapat saya tentukan untuk bidang Hari-dalam-seminggu dalam ekspresi cron dan item apa yang harus saya perhatikan saat mengonfigurasi bidang Hari-dalam-seminggu dan Hari-dalam-sebulan?
Bidang Hari-dalam-seminggu adalah bidang kelima dalam ekspresi cron dan digunakan untuk menentukan hari-hari dalam seminggu di mana Anda ingin mengeksekusi pekerjaan cron.
Nilai valid dalam format numerik: 1 hingga 7, yang sesuai dengan Minggu hingga Sabtu dalam seminggu.
Nilai valid dalam format singkatan: SUN, MON, TUE, WED, THU, FRI, dan SAT.
Contoh:
MON-FRI: menentukan setiap hari dari Senin hingga Jumat.MON,WED,FRI: menentukan setiap Senin, Rabu, dan Jumat.MON-WED,SAT: menentukan hari dari Senin hingga Rabu dan Sabtu.2-6: menentukan hari dalam seminggu dari Senin hingga Jumat. Dalam contoh ini, bidang Hari-dalam-seminggu dalam format numerik.SUN,SAT: menentukan setiap akhir pekan, yang mencakup Sabtu dan Minggu.
Sintaksis lanjutan:
SUN#1: menentukan Minggu pertama setiap bulan.6L: menentukan Jumat terakhir setiap bulan.*/2: menentukan setiap hari lainnya.MON#2: menentukan Senin kedua setiap bulan.
Saat Anda mengonfigurasi bidang Hari-dalam-seminggu dan Hari-dalam-sebulan, perhatikan hal-hal berikut:
Singkatan hari dalam seminggu tidak peka huruf besar/kecil. Misalnya,
MONsetara denganmon.Untuk mencegah hari dalam seminggu bertentangan dengan hari dalam sebulan, gunakan
?di bidang Hari-dalam-seminggu atau Hari-dalam-sebulan.Saat Anda menggunakan karakter
Ldan#dalam ekspresi cron, pastikan ekspresi tersebut cocok dengan tanggal valid.Jika Anda menggunakan format numerik untuk bidang Hari-dalam-seminggu, perhatikan bahwa 1 mewakili Minggu bukan Senin.
Bagaimana cara menggunakan karakter L di bidang Hari-dalam-sebulan dan Hari-dalam-seminggu dalam ekspresi cron?
Di bidang Hari-dalam-sebulan
Jika Anda hanya menggunakan karakter L, perhatikan hal-hal berikut:
Karakter
Lmenentukan hari terakhir dalam sebulan.Contoh:
0 0 L * ?menentukan tengah malam pada hari terakhir setiap bulan.Karakter L secara otomatis menyesuaikan dengan jumlah hari di bulan yang berbeda, termasuk Februari di tahun kabisat.
Jika Anda menggunakan karakter L bersama dengan nilai offset, perhatikan hal-hal berikut:
Nilai
L-nmenentukan hari yang satu hari sebelum N hari dari akhir bulan.Contoh:
0 0 L-2 * ?menentukan tengah malam pada hari ketiga dari akhir setiap bulan.
Di bidang Hari-dalam-seminggu
Jika Anda hanya menggunakan karakter L, perhatikan hal-hal berikut:
Karakter
Lmenentukan Sabtu, yang merupakan hari terakhir dalam seminggu.Contoh:
0 0 ? * Lmenentukan tengah malam setiap Sabtu.
Jika Anda menggunakan karakter L bersama dengan angka, perhatikan hal-hal berikut:
Nilai
nLmenentukan hari N terakhir dalam sebulan, di mana N mewakili hari dalam seminggu.Contoh:
6Lmenentukan Jumat terakhir dalam sebulan.Contoh:
2Lmenentukan Senin terakhir dalam sebulan.
Jika Anda menggunakan karakter L bersama dengan singkatan Hari-dalam-seminggu, perhatikan hal-hal berikut:
Nilai
XXXLmenentukan hari spesifik terakhir dalam seminggu pada bulan tersebut.Contoh:
FRILmenentukan Jumat terakhir dalam sebulan.Contoh:
MONLmenentukan Senin terakhir dalam sebulan.
Pertimbangan
Jangan gunakan kombinasi berikut:
Karakter L dan rentang atau daftar
Contoh kesalahan:
L,15danL-3,15
Penyesuaian Hari-dalam-sebulan:
Karakter L secara otomatis menyesuaikan dengan jumlah hari di bulan yang berbeda.
Bidang Hari-dalam-sebulan dapat menangani kasus Februari di tahun kabisat dengan benar.
Perhatikan hal-hal berikut saat menggunakan bidang Hari-dalam-seminggu:
Jika Anda menggunakan karakter L di bidang Hari-dalam-seminggu, kami menyarankan Anda mengatur bidang Hari-dalam-sebulan ke
?.Ini mencegah konflik tanggal.
Waktu eksekusi:
Jika hari terakhir dalam seminggu yang Anda tentukan untuk pekerjaan cron tidak ada, pekerjaan tidak akan dieksekusi.
Sebagai contoh, Februari mungkin tidak memiliki Jumat kelima.
Apa yang harus dilakukan jika pesan kesalahan "errors in crontab file, can't install" muncul saat saya menjalankan perintah crontab -e di instance Linux?
Untuk menyelesaikan masalah ini, Anda dapat masuk ke instance dan mengubah format ekspresi cron di file crontab atau memperbesar disk tempat file disimpan.
Hubungkan ke instance ECS Linux.
Untuk informasi lebih lanjut, lihat Metode untuk menghubungkan ke Instance ECS.
Jalankan perintah berikut untuk memeriksa penggunaan ruang disk:
df -hKeluaran perintah serupa dengan yang berikut. Nilai di kolom Use% menunjukkan penggunaan ruang setiap sistem file. Dalam contoh ini, penggunaan ruang partisi /dev/xvda1 adalah 15%.
Jika penggunaan disk mendekati 100%, ruang disk tidak mencukupi. Kami menyarankan Anda untuk mengubah ukuran disk sebelum menjalankan perintah crontab -e. Untuk informasi tentang cara mengubah ukuran disk, lihat Overview.

