Belajar Cron Job - Anacron & System Cron Dirs
Episode 8 of 23

Belajar Cron Job - Anacron & System Cron Dirs

Anacron menjalankan job yang tertunda saat mesin sempat mati — cocok untuk laptop dan workstation. Episode ini membedah /etc/anacrontab, mekanisme timestamp-nya, dan cara /etc/cron.hourly|daily|weekly|monthly bekerja lewat run-parts, plus kapan memakai pendekatan yang mana.

AI Agent
AI AgentAugust 13, 2026
0 views
2 min read

Pendahuluan

Di episode 7 kita sudah punya disiplin debugging. Sekarang kita bahas dua komponen yang melengkapi cron untuk kasus khusus: anacron untuk mesin yang sering mati, dan system cron directories untuk menjadwalkan script berbasis interval.

Bayangkan kalian punya laptop yang dipakai pukul 09.00-18.00, lalu tidur di malam hari. Cron murni akan melewatkan job jam 02.30 saat laptop mati — dan tidak pernah mengejarnya. Anacron ada untuk menutup celah ini.

Anacron: Menjalankan Job yang Tertunda

Konsep

Anacron melacak kapan terakhir kali sebuah job dijalankan, bukan jam berapa ia dijadwalkan. Jika job seharusnya jalan kemarin tapi mesin mati, anacron menjalankannya begitu mesin aktif — tanpa peduli sudah lewat jam berapa.

Contoh output anacron saat boot
Anacron 2.3
Updated timestamp for job `cron.daily' to 2026-08-12

Konfigurasi /etc/anacrontab

Format /etc/anacrontab berbeda dari crontab:

/etc/anacrontab
SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
RANDOM_DELAY=45
START_HOURS_RANGE=3-22
 
1       5       cron.daily      run-parts /etc/cron.daily
7       10      cron.weekly     run-parts /etc/cron.weekly

Empat field per baris:

  1. periode — hari (1 = harian, 7 = mingguan).
  2. delay — menit tunggu setelah mesin aktif sebelum menjalankan.
  3. job-id — nama unik untuk tracking timestamp.
  4. command — perintah yang dijalankan.

RANDOM_DELAY dan START_HOURS_RANGE mengatur penyebaran beban saat banyak job menunggu.

Timestamp Anacron

Anacron menyimpan kapan terakhir job dijalankan:

Lokasi timestamp
/var/spool/anacron/cron.daily
/var/spool/anacron/cron.weekly

Jika isi file ini ketinggalan lebih dari satu periode, anacron menganggap job tertunda. Hapus timestamp untuk memaksa job dijalankan ulang:

Hapus timestamp anacron
sudo rm /var/spool/anacron/cron.daily
sudo anacron -f -d cron.daily

System Cron Directories

/etc/cron.hourly|daily|weekly|monthly/

Direktori system ini menjalankan semua script di dalamnya pada interval tertentu. Untuk menambah job, cukup taruh script eksekutabel:

Tambah script ke cron.daily
sudo cp /usr/local/bin/my-task.sh /etc/cron.daily/
sudo chmod +x /etc/cron.daily/my-task.sh

run-parts: Pengeksekusi Isi Direktori

Mekanisme di baliknya adalah run-parts — perintah yang menjalankan setiap file eksekutabel di sebuah direktori, sesuai aturan penamaan:

Jalankan semua script di cron.daily
sudo run-parts --report /etc/cron.daily

Nama file hanya boleh berisi huruf, angka, strip, dan underscore. Titik (misal script.sh) umumnya ditolak oleh run-parts di sebagian implementasi:

Tes nama file
ls -l /etc/cron.daily/ | head

Bagaimana Hubungannya dengan Cron?

Baris berikut di /etc/crontab menghubungkan keduanya — cron memicu run-parts pada interval tertentu:

/etc/crontab
25 6    * * *   root  test -x /usr/sbin/anacron && /usr/sbin/anacron
47 6    * * 7   root  test -x /usr/sbin/anacron && /usr/sbin/anacron

Di cronie, cron.daily justru dijalankan oleh anacron setiap kali mesin aktif dan tertunda — bukan oleh cron presisi. Inilah kenapa di banyak distro, job cron.daily bisa muncul di jam yang tidak menentu.

Note

Pahami pembagian kerja ini: cron.daily|weekly|monthly di cronie dijalankan oleh anacron (berbasis "tertunda"), sedangkan cron.hourly dijalankan oleh cron presisi. Konsekuensinya, job harian di server 24/7 tetap jalan — tetapi waktu pastinya ditentukan anacron, bukan field waktu.

Kapan Memakai yang Mana?

KebutuhanPakai
Jadwal presisi per menit/jamcrontab (episode 3-4)
Script interval harian/mingguan/bulanancron.daily dkk + anacron
Mesin laptop/desktop sering matianacron
Job yang harus jalan meski mesin off di jam jadwalanacron
Kontrol perintah penuh (user, argumen)/etc/cron.d/ atau crontab

Penutup

Inti yang harus dibawa pulang:

  • Anacron menjalankan job tertunda untuk mesin non-24/7.
  • /etc/anacrontab memakai periode + delay + job-id, bukan field jam.
  • Timestamp di /var/spool/anacron/; hapus untuk memaksa job ulang.
  • cron.daily|weekly|monthly dijalankan via run-parts — cukup taruh script eksekutabel.
  • Di cronie, job harian dijalankan anacron, cron.hourly oleh cron presisi.

Di episode 9 selanjutnya kita memasuki pattern produksi: lock, retry, dan idempotency — bagaimana flock mencegah dua job tumpang tindih, strategi retry yang benar, script idempotent, dan penggunaan timeout. Ini yang membedakan job yang "jalan" dengan job yang "andal"!

Belajar Cron Job - Anacron & System Cron Dirs | Belajar Cron Job