Kalau kamu ngurus server, cepat atau lambat pasti butuh sesuatu yang bisa jalan sendiri tanpa harus kamu tungguin. Nah, di sinilah cron job berperan. Ini cara paling klasik sekaligus paling andal di Linux buat ngejalanin perintah otomatis pada jadwal tertentu. Mau backup database tiap malam, bersih-bersih file sampah tiap minggu, atau jalanin script tiap 5 menit? Cron jawabannya. Kita bahas cara kerjanya, format jadwalnya, sampai contoh nyata yang bisa langsung kamu pakai di VPS.
Cron Itu Apa, Sih?
Cron itu daemon — layanan yang terus jalan diam-diam di background sistem Linux. Kerjaannya cuma satu: ngecek daftar jadwal, terus ngejalanin perintah pas waktunya tiba. Daftar jadwal ini disimpan di file namanya crontab, singkatan dari cron table.
Tiap user bisa punya crontab sendiri, dan sistem juga punya crontab global. Jadi kamu bisa ngatur jadwal tugas tanpa perlu nungguin terminal kebuka terus.
Kalau kamu masih baru main terminal Linux, mending baca dulu perintah Linux dasar untuk developer biar lebih gampang ngikutin contoh-contoh di sini.
Cara Buka Crontab
Buat ngedit jadwalmu sendiri, jalanin ini:
crontab -e
Perintah ini bakal ngebuka editor teks yang isinya crontab kamu. Kalau ini pertama kalinya, biasanya kamu diminta milih editor dulu — pilih nano aja kalau bingung, paling gampang.
Ada beberapa perintah lain yang lumayan kepake:
crontab -l # melihat daftar jadwal yang ada
crontab -r # menghapus semua jadwal (hati-hati!)
Ngerti Format Waktu Cron
Inti dari cron itu ada di format waktunya. Tiap baris jadwal terdiri dari 5 kolom waktu, terus diikuti perintah yang mau dijalanin:
# ┌───────── menit (0 - 59)
# │ ┌─────── jam (0 - 23)
# │ │ ┌───── tanggal (1 - 31)
# │ │ │ ┌─── bulan (1 - 12)
# │ │ │ │ ┌─ hari dalam minggu (0 - 6, 0 = Minggu)
# │ │ │ │ │
# * * * * * perintah-yang-dijalankan
Tanda bintang (*) artinya "setiap". Jadi * * * * * berarti "jalanin tiap menit". Ada beberapa simbol khusus yang perlu kamu tau:
*— setiap nilai.,buat bikin daftar, misalnya1,15berarti menit ke-1 dan ke-15.-buat rentang, misalnya1-5berarti dari 1 sampai 5./buat kelipatan, misalnya*/10berarti tiap 10 satuan.
Contoh Jadwal yang Sering Dipakai
Biar makin kebayang, nih beberapa contoh nyata:
# Setiap hari jam 2 pagi - cocok untuk backup
0 2 * * * /home/user/backup.sh
# Setiap 5 menit - cocok untuk script pemantauan
*/5 * * * * /home/user/cek-server.sh
# Setiap Senin jam 8 pagi
0 8 * * 1 /home/user/laporan-mingguan.sh
# Setiap awal bulan jam tengah malam
0 0 1 * * /home/user/reset-bulanan.sh
# Setiap jam, di menit ke-30
30 * * * * /home/user/sinkron-data.sh
Kalau masih ragu sama format waktunya, di luar sana banyak situs "cron expression generator" gratis yang bisa bantu nerjemahin jadwal ke format cron. Tapi percaya deh, ngerti polanya sendiri bakal jauh lebih ngebantu buat jangka panjang.
Contoh Praktis: Backup Otomatis
Misalnya kita mau bikin salinan folder website tiap malam. Bikin dulu script-nya:
#!/bin/bash
# file: /home/user/backup.sh
TANGGAL=$(date +%Y-%m-%d)
SUMBER="/var/www/website"
TUJUAN="/home/user/backups"
# Buat folder tujuan kalau belum ada
mkdir -p "$TUJUAN"
# Kompres folder menjadi file tar.gz
tar -czf "$TUJUAN/backup-$TANGGAL.tar.gz" "$SUMBER"
echo "Backup selesai: backup-$TANGGAL.tar.gz"
Jangan lupa kasih izin biar bisa dieksekusi:
chmod +x /home/user/backup.sh
Terus daftarin ke crontab pakai crontab -e, tambahin baris ini:
0 2 * * * /home/user/backup.sh >> /home/user/backup.log 2>&1
Bagian >> /home/user/backup.log 2>&1 itu artinya semua output (termasuk error) bakal disimpan ke file log. Ini ngebantu banget pas kamu mau ngecek cron-nya beneran jalan apa nggak.
Kesalahan Umum dan Cara Benerinnya
Banyak yang baru mulai suka bingung kenapa cron-nya "nggak jalan". Padahal biasanya penyebabnya sepele:
- Path-nya nggak lengkap. Cron jalan dengan environment yang minim banget. Makanya selalu pakai path absolut, misalnya
/usr/bin/python3, bukan cumapython3. - Script belum punya izin eksekusi. Pastiin udah di-
chmod +x. - Lupa nyimpen output. Tanpa log, kamu bakal buta pas ada error. Selalu arahin output ke file log kayak contoh di atas.
- Zona waktunya beda. Cron ngikutin zona waktu server. Cek pakai perintah
date, sesuain kalau perlu.
Buat mastiin service cron-nya aktif, jalanin:
systemctl status cron
Cron Cocok untuk Otomasi Apa Saja?
Cron ini sering jadi tulang punggung otomasi server. Beberapa contohnya:
- Ngejalanin scraper data dengan Node.js tiap pagi.
- Ngirim laporan harian lewat bot Telegram.
- Bersih-bersih file log lama biar disk nggak penuh.
- Nge-update sertifikat atau cache secara berkala.
FAQ
Bedanya cron sama systemd timer apa? Dua-duanya sama-sama bisa nyusun jadwal tugas. Bedanya, cron lebih simpel dan ada di mana-mana, sedangkan systemd timer lebih fleksibel plus integrasi log-nya lebih rapi. Tapi buat tugas harian biasa, cron udah lebih dari cukup, kok.
Gimana kalau server-nya mati pas jadwalnya tiba? Cron standar nggak bakal ngejalanin tugas yang kelewat. Kalau kamu emang butuh njalanin tugas yang sempat kelewat, pakai tool tambahan kayak anacron yang emang didesain buat itu.
Cron bisa nggak ngejalanin script Python atau Node.js?
Bisa banget. Tinggal panggil interpreter-nya pakai path lengkap, misalnya /usr/bin/node /home/user/script.js.
Penutup
Cron job itu bakal jadi teman setia siapa pun yang ngurus server. Begitu kamu paham format 5 kolomnya, otomasi tugas rasanya jadi gampang banget. Satu tips terakhir: selalu tes script-mu manual dulu di terminal sebelum dimasukin ke crontab. Kalau di manual aja udah jalan, kemungkinan besar di cron juga bakal jalan — asal path-nya udah bener.