Sintaks
Format Crontab
# ┌───── minute (0-59) # │ ┌───── hour (0-23) # │ │ ┌───── day of month (1-31) # │ │ │ ┌───── month (1-12) # │ │ │ │ ┌───── day of week (0-7, 0&7=Sun) # * * * * * command
Nilai Field
*Nilai apapun (wildcard)
,Daftar nilai: 1,3,5
-Range: 1-5
/Langkah: */10 (setiap 10)
0-59Range menit
0-23Range jam
1-31Range hari dalam bulan
1-12Range bulan (atau JAN-DEC)
0-7Hari dalam seminggu (0&7=Min, atau SUN-SAT)
String Khusus
Jadwal Singkatan
@rebootJalankan sekali saat startup
@yearly0 0 1 1 * — sekali setahun (1 Jan)
@monthly0 0 1 * * — sekali sebulan (tanggal 1)
@weekly0 0 * * 0 — sekali seminggu (Minggu)
@daily0 0 * * * — sekali sehari (tengah malam)
@hourly0 * * * * — sekali sejam
Contoh
Jadwal Umum
30 2 * * * /usr/local/bin/backup.sh 0 9 * * 1-5 /opt/report.sh */15 * * * * /usr/bin/health-check.sh 0 0 1 * * /opt/monthly-cleanup.sh 0 8,17 * * * /opt/notify.sh
Rincian Jadwal
30 2 * * *Setiap hari pukul 02:30
0 9 * * 1-5Hari kerja pukul 09:00
*/15 * * * *Setiap 15 menit
0 0 1 * *Hari pertama bulan, tengah malam
0 8,17 * * *Setiap hari pukul 08:00 dan 17:00
Environment
Mengatur Variabel
SHELL=/bin/bash PATH=/usr/local/bin:/usr/bin:/bin [email protected] HOME=/home/deploy * * * * * /opt/myjob.sh
Catatan Environment
SHELLShell untuk menjalankan perintah (default /bin/sh)
PATHSearch path (default cron sangat minimal)
MAILTOKirim output ke alamat ini (kosong = tidak ada email)
HOMEDirektori home untuk cron job
Logging
Output & Logging
# redirect stdout + stderr to a log file */5 * * * * /opt/job.sh >> /var/log/job.log 2>&1 # discard all output 0 3 * * * /opt/job.sh > /dev/null 2>&1 # log only errors 0 3 * * * /opt/job.sh > /dev/null 2>> /var/log/job-err.log
Melihat Log Cron
# Debian / Ubuntu (syslog) grep CRON /var/log/syslog # RHEL / CentOS cat /var/log/cron # journalctl (systemd) journalctl -u cron --since "1 hour ago"
Jadwal Umum
Pola Sehari-hari
0 * * * *Setiap jam tepat
*/5 * * * *Setiap 5 menit
*/30 * * * *Setiap 30 menit
0 0 * * *Setiap hari tengah malam
0 6 * * 1Setiap Senin pukul 06:00
0 0 1,15 * *Tanggal 1 dan 15 setiap bulan
0 0 * * 5Setiap Jumat tengah malam
0 0 1 1 *Setiap 1 Januari
Perintah crontab
Mengelola Crontab
crontab -e # edit your crontab crontab -l # list your crontab crontab -r # remove your crontab crontab -u alice -l # list another user's (root) crontab /path/to/file # install crontab from file
Lokasi Crontab Sistem
/etc/crontabCrontab seluruh sistem (ada field user)
/etc/cron.d/File cron tambahan
/etc/cron.daily/Script yang dijalankan harian
/etc/cron.hourly/Script yang dijalankan per jam
/etc/cron.weekly/Script yang dijalankan mingguan
/etc/cron.monthly/Script yang dijalankan bulanan
/var/spool/cron/Penyimpanan crontab per-user
Tips
Praktik Terbaik
Gunakan path absolutPATH cron minimal; selalu gunakan path lengkap
Redirect outputHindari banjir email dengan > /dev/null 2>&1
Lock fileGunakan flock untuk mencegah eksekusi tumpang tindih
Test duluJalankan perintah secara manual sebelum dijadwalkan
Gunakan MAILTOSet MAILTO="" untuk matikan semua email
Periksa timezoneCron menggunakan waktu sistem; verifikasi dengan date
Mencegah Overlap dengan flock
# only run if not already running * * * * * /usr/bin/flock -n /tmp/job.lock /opt/job.sh