Cron adalah: Format Cron Job dan Contoh — Terminal

Cron adalah scheduler Unix/Linux untuk menjalankan perintah otomatis pada waktu tertentu. Pelajari format lima kolom cron expression lewat contoh.

Cron Jobs & Scheduling

Cron adalah scheduler bawaan Unix/Linux untuk menjalankan perintah secara otomatis pada waktu tertentu — tanpa perlu kamu duduk di depan komputer.

Format Cron Expression

┌───────────── menit       (0-59)
│ ┌───────────── jam        (0-23)
│ │ ┌───────────── hari     (1-31)
│ │ │ ┌───────────── bulan  (1-12)
│ │ │ │ ┌───────────── hari dalam seminggu (0-7, 0&7=Minggu)
│ │ │ │ │
* * * * * perintah-yang-dijalankan

Simbol khusus:

Simbol Arti Contoh
* Setiap nilai * * * * * = setiap menit
, Beberapa nilai 0,30 = menit 0 dan 30
- Range 1-5 = Senin sampai Jumat
/ Interval */15 = setiap 15 menit

Contoh Cron Expression

# Setiap menit
* * * * * /script.sh

# Setiap jam (menit 0)
0 * * * * /script.sh

# Setiap hari jam 9 pagi
0 9 * * * /script.sh

# Setiap hari kerja (Senin-Jumat) jam 9 pagi
0 9 * * 1-5 /script.sh

# Setiap Senin jam 8 pagi
0 8 * * 1 /script.sh

# Setiap 15 menit
*/15 * * * * /script.sh

# Setiap hari jam 00:00 tengah malam
0 0 * * * /backup.sh

# Setiap tanggal 1 jam 00:00 (awal bulan)
0 0 1 * * /monthly-report.sh

# Setiap tanggal 1 Januari jam 00:00
0 0 1 1 * /yearly-cleanup.sh

# Setiap 5 menit pada jam kerja (8-17, Senin-Jumat)
*/5 8-17 * * 1-5 /check-service.sh

Mengelola Crontab

# Edit crontab user saat ini
crontab -e

# Lihat crontab aktif
crontab -l

# Hapus semua crontab
crontab -r

# Edit crontab user lain (root only)
crontab -e -u www-data

Menulis Cron Job yang Baik

# ── Selalu gunakan path absolut ───────────────────────
0 9 * * * /usr/bin/python3 /home/budi/scripts/backup.py

# ── Arahkan output ke log ────────────────────────────
0 9 * * * /script.sh >> /var/log/myjob.log 2>&1
# 2>&1 = redirect stderr ke stdout

# ── Abaikan output (silent) ──────────────────────────
0 9 * * * /script.sh > /dev/null 2>&1

# ── Set environment variable ─────────────────────────
MAILTO=""   # jangan kirim email
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

0 2 * * * /scripts/nightly-backup.sh >> /var/log/backup.log 2>&1

Shortcut Cron Khusus

@reboot    # saat sistem boot
@yearly    # = 0 0 1 1 *
@monthly   # = 0 0 1 * *
@weekly    # = 0 0 * * 0
@daily     # = 0 0 * * *
@hourly    # = 0 * * * *

# Contoh
@reboot /scripts/start-server.sh
@daily  /scripts/cleanup-temp.sh

Tools Bantu

# Cek apakah cron service berjalan
systemctl status cron

# Lihat log cron
grep CRON /var/log/syslog | tail -20

# Tools online untuk visualisasi
# crontab.guru — masukkan expression, lihat deskripsi

Tips

  1. Test script dulu secara manual sebelum dijadwalkan
  2. Gunakan path absolut untuk semua perintah dan file
  3. Log output selalu ke file agar mudah debug
  4. Cek timezone — cron berjalan di timezone sistem server
  5. Gunakan crontab.guru untuk validasi expression