Cron adalah tool di sistem operasi berbasis UNIX (Linux, Ubuntu, dan lain-lain) yang berfungsi untuk menjalankan task atau script secara otomatis.
Oleh karena itu, cron job adalah sebutan penggunaan cron untuk menjadwalkan task di waktu yang sudah ditentukan secara berulang kali.
Perintah Dasar Cron Job
Ada banyak cara untuk membuat dan mengedit cron job. Nah, di tutorial ini, kami menggunakan Linux Shell Prompt (Terminal).
Bagi yang menggunakan VPS di Hostinger, info login bisa didapatkan di tab manajemen (kelola) VPS. Setelah itu, akses server melalui SSH.
Berikut beberapa perintah dasar cron job:
Untuk mengedit file crontab user, Anda harus mengetik perintah ini di terminal:
crontab -e
Hasilnya akan seperti ini.
Karena yang digunakan adalah vi editor, mau tak mau Anda harus mempelajari perintah dasar vi terlebih dulu agar tidak salah langkah.
Jika ingin mengedit crontab user lain, Anda hanya perlu mengetik crontab -u username -e. Tapi perintah ini hanya bisa dilakukan apabila role Anda adalah superuser, dan Anda wajib menambahkan sudo su sebelumnya.
Untuk menghapus file crontab user, gunakan perintah ini:
crontab -r
Fungsi -i sama dengan -r. Bedanya, perintah ini akan menampilkan opsi ya atau tidak (yes/no) sebelum user memutuskan untuk menghapus crontab:
crontab -i
Untuk menampilkan isi file crontab yang sedang diakses, jalankan perintah ini di terminal:
crontab -l
Perintah crontab -l dipakai untuk mengecek ada tidaknya file crontab yang dibuat. Jika tidak ada, hasil yang ditampilkan seperti ini.
Untuk mengecek daftar file crontab user lain, role Anda sudah harus superuser agar bisa menggunakan perintah crontab -u username -l.
Selain perintah dasar, Anda juga wajib mempelajari syntax dasar cron job.
Pada umumnya, file crontab terdiri atas dua bagian, yakni pengatur waktu atau jadwal (schedule timer) dan perintah (command). Berikut cara penulisan perintahnya:
* * * * * /bin/sh backup.sh
- ***** /bin/sh backup.sh cronjob akan menjalankan backup setiap menit.
- 30 18 * * * rm /home/sydtesting/tmp/* akan menghapus file tmp dari /home/sydtesting/tmp tepat pada jam 18.30 setiap harinya.
Cara Penulisan Cron Syntax yang Benar
File crontab memiliki lima field yang disimbolkan dengan tanda bintang. Masing-masing menunjukkan pengaturan tanggal dan waktu untuk menjalankan sebuah task secara berulang.
- Menit (Minute) – menunjukkan di menit ke berapa perintah akan dijalankan. Angkanya berkisar dari 0 sampai 59.
- Jam (Hour) – menunjukkan di jam ke berapa perintah akan dijalankan. Angkanya berkisar dari 0 sampai 23.
- Hari di bulan tertentu (Day of the month) – menunjukkan di hari apa perintah akan dijalankan. Tanggalnya dimulai dari tanggal 1 sampai 31.
- Bulan (Month) – menunjukkan di bulan apa perintah akan dijalankan, dimulai dari bulan 1 hingga 12.
- Hari di minggu tertentu (Day of the week) – menunjukkan di hari apa perintah akan dijalankan, dimulai dari hari 0 sampai 7.
Anda juga harus menggunakan karakter yang tepat di setiap file crontab:
- Tanda bintang (*) – untuk mengatur semua parameter jadwal atau waktu.
- Koma (,) – untuk menjalankan satu perintah di dua atau lebih dari dua waktu yang berbeda.
- Tanda penghubung (-) – satu perintah bisa dijalankan dalam beberapa kali waktu atau hari. Tanda ini digunakan untuk menentukan rentang waktunya.
- Garis miring (/) – untuk membuat interval dalam rentang waktu tertentu.
- Last (L) – mereferensikan hari di minggu terakhir pada suatu bulan. Misalnya, di bulan tersebut hari terakhirnya adalah hari Rabu. Maka 3L berarti hari Rabu terakhir.
- Weekday (W) – untuk menentukan hari kerja di waktu tertentu. Misalnya, Anda menjadwalkan satu minggu (1W). Apabila hari pertama (1st) – yang juga adalah akhir pekan – adalah Sabtu, perintah baru akan dijalankan di hari ketiga (hari kerja), yakni Senin (3rd).
- Tanda pagar (#) – untuk menentukan hari di minggu tertentu. Biasanya hadir di kisaran 1 sampai 5. Misalnya, 1#2 berarti Senin kedua (hari pertama di minggu kedua).
- Tanda tanya (?) – membiarkan field kosong.
12 Contoh Syntax Cron
Kini Anda sudah mengetahui cara menulis cron syntax yang benar, kan? Selanjutnya, kami akan memberikan beberapa contoh supaya Anda bisa lebih memahami penggunaan perintah yang telah kami jelaskan di atas.
Perlu diingat, output yang dihasilkan perintah ini akan otomatis dikirimkan ke akun email Anda. Jika merasa terganggu dengan banyaknya kiriman email, tambahkan >dev/null/ 2>&1 ke syntax. Kiriman ke email akan dinonaktifkan. Berikut contohnya:
0 5 * * * /root/backup.sh >/dev/null 2>&1
Tapi kalau Anda ingin mengalihkan kiriman output ke akun lain yang lebih spesifik, tambahkan MAILTO yang lalu diikuti dengan alamat email. Ini contohnya:
MAILTO="[email protected]" 0 3 * * * /root/backup.sh >/dev/null 2>&1
Daftar contoh syntax lainnya:
Syntax | Arti |
0 0 * * * /bin/sh backup.sh | Untuk menjalankan database pada tengah malam dan juga untuk menjalankan database sekali sehari. |
0 6,18 * * * /bin/sh backup.sh | Untuk menjalankan backup database dua kali sehari, yakni pada jam 6 pagi dan 6 sore. |
0 */6 * * * /scripts/monitor.sh | Untuk melakukan pemantauan atau monitor setiap enam jam. |
*/10 * * * * /home/user/script.sh | Untuk menjalankan cron job file script yang ada di direktori home setiap 10 menit. |
0 * 20 7 * /bin/sh backup.sh | Untuk menjalankan backup database setiap jam hanya pada tanggal 20 Juli. |
0 0 * * 2 * /bin/sh | Untuk menjalankan backup database pada tengah malam setiap hari Selasa. |
* * * 1,2,5 * /script/script.sh | Untuk menjalankan perintah di bulan Januari, Februari, dan Mei. |
10-59/5 5 * * * /home/user/script.sh | Untuk menjalankan perintah setiap 5 menit di jam 5 pagi. Waktunya dimulai dari jam 5.10. |
0 8 1 */3 * /home/user/script.sh | Untuk menjalankan perintah setiap tiga bulan di hari pertama pada jam 8 pagi. |
* * * * * /scripts/script.sh; /scripts/scrit2.sh | Untuk menjadwalkan berbagai job di satu cron job. |
@reboot /scripts/script.sh | Untuk menjalankan task tertentu setiap kali sistem diaktifkan. |
0 0 1 * * /home/user/script.sh | Untuk menjalankan perintah di hari pertama setiap bulan. |
Hak Akses Cron
Cron job memiliki dua file penting.
- /etc/cron.allow – jika ada cron.allow, nama user harus tercantum agar dia bisa menggunakan cron job.
- /etc/cron.deny – jika file cron.allow tidak ada tapi yang ada malahan file cron.deny, nama user tidak boleh ada di file cron.deny agar dia bisa menggunakan cron job.