Panduan Cron
Panduan

Memahami Cron dan Zona Waktu Secara Menyeluruh

Server UTC vs waktu lokal, penentuan TZ

Ekspresi cron itu sendiri tidak memuat informasi zona waktu. Waktu yang ditunjuk oleh ekspresi mengikuti zona waktu sistem tempat cron berjalan. Karena itu, meskipun 0 9 * * * yang sama, waktu eksekusi sebenarnya berbeda tergantung pada zona waktu servernya.

Banyak server·kontainer memiliki zona waktu default UTC. Karena Korea (KST) adalah UTC+9, jika Anda menjadwalkan 0 0 * * * (tengah malam) pada server UTC, tugas sebenarnya akan dijalankan pada pukul 09:00 waktu Korea. Kasus meleset 9 jam karena berpikir dalam waktu lokal saat menjadwalkan sangat sering terjadi.

Beberapa implementasi cron memungkinkan Anda menaruh baris seperti CRON_TZ=Asia/Seoul di bagian atas crontab agar diinterpretasikan dalam zona waktu tertentu. Pada lingkungan kontainer, Anda juga bisa menyesuaikan variabel lingkungan TZ pada image atau /etc/localtime ke wilayah yang diinginkan. Namun, dukungannya berbeda-beda di setiap implementasi, jadi perlu diperiksa.

Pada wilayah yang menerapkan waktu musim panas (DST), pada hari saat jam bergeser maju atau mundur, suatu waktu tertentu bisa terlewati atau muncul dua kali, sehingga tugas yang dijadwalkan pada waktu itu bisa terlewat atau berjalan ganda. Untuk tugas penting, menjadwalkannya berdasarkan UTC dapat menghindari masalah semacam ini.

Tips praktis: pikirkan ekspresi dalam UTC, dan pastikan selalu memeriksa zona waktu sebenarnya dari lingkungan deployment. Sebagai catatan, waktu eksekusi berikutnya yang ditampilkan oleh alat di situs ini berdasarkan zona waktu lokal browser Anda, jadi gunakan sebagai acuan dengan membandingkannya terhadap zona waktu server.

Sumber Daya

Kumpulan Jadwal

Resep yang bisa langsung disalin dan dipakai

Cheat Sheet Sintaks

5 field dan karakter khusus sekilas

Makro & Alias

Ekspresi singkat seperti @daily

Panduan

Panduan praktis untuk memahami cron dengan benar dan mengurangi kesalahan