Scheduling Cron Process in FreeBSD With Crontab File
Crontab adalah perintah Unix yang membuat tabel atau daftar perintah, yang masing-masing akan dieksekusi oleh sistem operasi (OS) pada waktu yang ditentukan oleh pengguna dan dieksekusi secara teratur sesuai dengan instruksi skrip yang dibuat oleh pengguna. Crontab digunakan untuk membuat file crontab (daftar) dan kemudian digunakan untuk memodifikasi file crontab yang telah dibuat sebelumnya.
Crontab, yang sering disebut tabel cron, adalah file yang berisi jadwal berbagai entri cron yang harus dijalankan pada waktu yang telah ditentukan. Cara lain untuk menggambarkan crontab adalah sebagai utilitas yang memungkinkan tugas berjalan secara otomatis pada interval reguler di latar belakang oleh daemon cron.
Cron adalah utilitas standar sistem operasi FreeBSD yang memungkinkan otomatisasi tugas. Ini adalah daemon, yang merupakan proses yang biasanya dimulai saat boot-up dan berjalan di latar belakang. Daemon Cron adalah penjadwal berbasis waktu yang dapat berjalan secara otomatis. Sementara itu, pekerjaan Cron adalah tugas yang dilakukan oleh Cron yang terjadi selama proses boot-up atau booting, atau selama waktu yang ditentukan oleh pengguna.
1. Crontab dan Cron Jobs
Pekerjaan cron adalah perintah yang dijalankan oleh daemon cron pada interval yang dijadwalkan secara teratur. Ini juga dikenal sebagai jadwal cron, karena berisi instruksi khusus tentang perintah mana yang harus dijalankan dan kapan perintah tersebut harus dimulai.
Pengguna dapat mengirimkan pekerjaan cron dengan menentukan perintah crontab dengan tanda -e atau opsi -e. Perintah tersebut memanggil sesi penyuntingan sehingga pengguna dapat membuat file crontab dan menambahkan entri untuk setiap pekerjaan cron dalam file tersebut. Semua entri harus dalam bentuk yang dapat diterima oleh daemon cron.
Cron biasanya digunakan oleh administrator sistem untuk menjalankan proses berkala. Contoh proses yang dapat dijadwalkan dengan Cron meliputi:
- Cadangkan data dan file penting.
- Memperbarui perangkat lunak dan paket.
- Membersihkan dan mendefragmentasi disk.
- Mengirim email otomatis sesuai jadwal.
- Mengirim email dengan alamat IP saat boot-up.
- Membersihkan file log, dll.
Pada sistem FreeBSD, seperti pada kebanyakan sistem tipe UNIX lainnya, penjadwalan disebut cron. Sebagai daemon mandiri, Cron dapat berjalan terus-menerus dan memeriksa berkas masukannya (crontab) setiap menit untuk melihat apakah berkas tersebut telah dimodifikasi atau berisi tugas yang perlu dijalankan pada saat itu.
Salah satu keuntungan menggunakan Cron adalah proses cron tidak perlu dimulai ulang, berkas Cron akan secara otomatis membaca perubahan setiap menit.
2. File Crontab
Secara default FreeBSD menempatkan berkas Crontab di /etc/crontab. Berkas ini berisi pekerjaan terjadwal yang dijalankan oleh sistem, dan direktori /var/cron/tabs khusus memungkinkan pengguna individu untuk membuat berkas antrean crontab mereka sendiri.
Jika memungkinkan, sebaiknya jangan mengedit berkas /etc/crontab, tetapi buat berkas antrean terpisah. Setiap berkas crontab ditempatkan di direktori /var/cron/tabs. Mekanisme keamanan akan memungkinkan pengguna untuk membuat dan mengedit berkas mereka sendiri tanpa mengganggu berkas pengguna lain. Mekanisme ini adalah utilitas crontab.
Berkas crontab berisi entri untuk setiap pekerjaan cron, dengan setiap entri dipisahkan dari entri berikutnya oleh karakter baris baru. Selain itu, setiap entri berisi enam kolom/bidang yang dipisahkan oleh spasi.
Lihat contoh 6 kolom dari berkas crontab di bawah ini.
root@ns1:~ # ee /etc/crontab
#minute hour mday month wday who command
Jika kita terjemahkan, 6 bidang file crontab adalah sebagai berikut.
root@ns1:~ # ee /etc/crontab
#menit jam haridalamsebulan bulan haridalamseminggu user perintah
Cara pengisian setiap kolom adalah sebagai berikut:
- Minutes: Range from 0 to 59.
- Hour: Range from 0 to 23.
- Day of the month: Range from 1 to 31.
- Months: Range from 1 to 12.
- Day of the week: Range from 0 to 6, where 0 = Sunday.
- who: root.
- Command: newsyslog.
Lihat contoh file crontab di bawah ini.
root@ns1:~ # ee /etc/crontab
# /etc/crontab - root's crontab for FreeBSD
#
# $FreeBSD$
#
SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin
#
#minute hour mday month wday who command
#
# Save some entropy so that /dev/random can re-seed on boot.
*/11 * * * * operator /usr/libexec/save-entropy
#
# Rotate log files every hour, if necessary.
0 * * * * root newsyslog
#
# Perform daily/weekly/monthly maintenance.
1 3 * * * root periodic daily
15 4 * * 6 root periodic weekly
30 5 1 * * root periodic monthly
#
# Adjust the time zone if the CMOS clock keeps local time, as opposed to
# UTC time. See adjkerntz(8) for details.
1,31 0-5 * * * root adjkerntz -a
3. Bagaimana cara menggunakan file Crontab
Untuk lebih memahami perintah crontab, berikut ini beberapa contoh penulisan perintah file /etc/crontab.
a. Menjalankan program yang tidak terikat
59 12 * * * gunungrinjani /usr/local/bin/unbound
Script di atas menjelaskan bahwa pengguna Gunungrinjani akan menjalankan program unbound setiap hari pada pukul 12:59.
b. Menjalankan program redist-cli
0 21 * * * root /usr/local/bin/redis-cli
Script di atas menjelaskan, user root akan menjalankan program redis-cli setiap hari pada pukul 21:00.
c. Restart program apache24
0 1 * * 2-7 root root /usr/local/etc/rc.d/apache24 restart
Keterangan dari script di atas adalah user root akan melakukan restart program apache24 setiap hari selasa sampai sabtu pukul 01.00.
d. Matikan program apache24
30 07,09,13,15 * * * /usr/local/etc/rc.d/apache24 stop
Keterangan dari script di atas adalah akan mematikan program apach24 pada pukul 07:30, 09:30, 13:30 dan 15:30.
e. Mengaktifkan program Unbound secara otomatis
*/10 * * * * /usr/local/etc/rc.d/unbound start
Skrip di atas akan mengaktifkan program Unbound setiap 10 menit sekali.
Kesimpulannya, Crontab dapat menjadi alat yang ampuh untuk mengotomatiskan tugas-tugas yang berulang, tetapi juga dapat menimbulkan masalah jika tidak dikelola secara efektif. Dengan mengikuti praktik terbaik untuk memantau dan mengelola pekerjaan cron, pengembang dapat memastikan aplikasi mereka terus berjalan dengan lancar dan efisien.
