Alat pengembang · Generator crontab
Mengapa cron tidak memiliki kolom zona waktu: waktu lokal, CRON_TZ dan container di UTC
· Latar belakang
cron zona waktu penjadwalan
Ekspresi cron tidak memiliki zona waktu di dalamnya, sehingga lima bidang yang sama berarti momen yang berbeda pada host yang berbeda. Posting ini menjelaskan jam mana yang digunakan cron, ekstensi CRON_TZ, dan mengapa container mengubah jawabannya.
Bidang yang sama menghasilkan pratinjau instan yang berbeda ketika zona yang dipilih berubah
`0 9 * * *` berisi satu jam tetapi tidak ada lokasi. Di ToolAcre, memilih UTC atau Asia/Tokyo membiarkan lima bidang tidak berubah sembari mengubah waktu instan yang diwakili oleh masing-masing kandidat jam dinding 09:00. Oleh karena itu, sebuah laporan dapat muncul dalam selang waktu beberapa jam ketika dua lingkungan menafsirkan label lokal yang sama di zona berbeda.
Panel memperjelas ketergantungan ini dengan pemilih “Tampilkan proses berikutnya”. Gunakan zona mesin yang dituju saat meninjau jadwal, lalu catat asumsi tersebut di samping ekspresi. Pilihan tersebut hanya mempengaruhi pratinjau browser; itu tidak tertanam dalam teks cron yang disalin.
Ekspresi tersebut tidak mengandung zona; pemilihan jam daemon eksternal tidak dikonfigurasi di sini
Tepatnya ada lima spesifikasi bidang, tidak ada yang menyebutkan zona waktu. `nextRuns` menerima zona sebagai opsi terpisah dan default ke lingkungan host yang dilihat oleh JavaScript. Pemisahan ini membuktikan bahwa konteks zona berada di luar ekspresi model ToolAcre.
Buku kerja mengklaim jam mana yang dibaca setiap daemon. Repositori ini tidak dapat mengonfigurasi atau memeriksa daemon, sehingga tidak menetapkan perilaku universal tersebut. Ini hanya dapat menyarankan pencocokan zona pratinjau dengan interpretasi target yang terdokumentasi dan memverifikasi penjadwal yang diinstal secara independen.
Dukungan CRON_TZ berada di luar parser ini dan tidak diklaim
`CRON_TZ` tidak diuraikan. Gagal memasukkannya ke dalam kotak ekspresi karena bukan lima bidang, dan tidak ada kontrol per bidang yang menyimpan arahan. Klaim buku kerja bahwa satu implementasi mendukungnya sementara implementasi lainnya tidak memerlukan sumber tidak disajikan di sini.
Jika target mendokumentasikan arahan zona waktu, konfigurasikan dan uji di sana. Jangan berharap ToolAcre mempertahankan direktif saat menyalin ekspresi. Jaga agar metadata zona tetap berdekatan dengan jadwal hingga konfigurasi spesifik target ditinjau dan diterapkan.
Semantik lingkungan TZ tidak dimodelkan
Tugas `TZ` juga berada di luar cakupan. Browser menggunakan opsi `timeZone` eksplisit untuk pemformatan dan konversi, bukan baris lingkungan di dalam file crontab. Ia tidak dapat mengetahui apakah suatu penugasan mengubah evaluasi jadwal, keluaran perintah, atau tidak keduanya pada sistem lain.
Koreksi ini menghindari asumsi yang halus namun mahal. Nama yang mirip tidak berarti peran yang sama. Perlakukan pemilihan zona penjadwal dan lingkungan proses sebagai pertanyaan terpisah, dan jawab keduanya dari implementasi target, bukan dari generator ekspresi.
Default container dan cloud memerlukan bukti target
Kontainer dan gambar awan tidak diperiksa berdasarkan rute. Tidak ada soket Docker, jam host, atau layanan metadata yang ditanyakan. Klaim bahwa defaultnya adalah UTC mungkin benar dalam penerapan tertentu tetapi tidak dapat digeneralisasikan dari `Intl.DateTimeFormat` yang berjalan di browser pembaca.
Tangkap zona target sebenarnya melalui alat dan konfigurasinya yang terdokumentasi. Kemudian pilih nama IANA yang sama di ToolAcre bila tersedia. Daftar zona browser mencerminkan apa yang diketahui mesinnya; hal ini tidak membuktikan bahwa target berisi data atau pengaturan zona yang identik.
Contoh praktis: pratinjau 09:00 di dua zona yang dipilih tanpa konversi musiman hard-coding
Pertahankan `0 9 * * *` dan pratinjau satu hasil di UTC, lalu di Amerika/New_York. Setiap daftar menampilkan 09:00 sebagai waktu dinding, namun waktu instan berbeda berdasarkan offset zona yang berlaku. Hindari memublikasikan satu konversi jam permanen karena offset regional dapat berubah antar tanggal.
Pengujian menunjukkan prinsip ini dengan UTC dan tengah malam Tokyo dan dengan pekerjaan sehari-hari di London dalam perubahan maju. Gunakan kandidat langsung untuk tanggal yang ditinjau. Jika penerapan mengubah jadwal menjadi UTC jam tetap, dokumentasikan batasan musiman daripada menyiratkan satu nilai mempertahankan 09:00 lokal selamanya.
DST penanganan kandidat adalah perilaku pratinjau ToolAcre, bukan jaminan daemon
ToolAcre membuat kandidat sebagai komponen kalender lokal dan mengonversinya melalui data zona browser. Waktu maju musim semi yang tidak ada dihilangkan, dan jam harian biasa tetap menjadi jam lokal yang sama di seluruh transisi yang diuji. Itu adalah pratinjau fakta implementasi.
Ini bukan jaminan eksekusi untuk daemon atau penjadwal cloud. Verifikasi kebijakan transisi tempat pekerjaan akan dijalankan. Pratinjau dapat mengungkap risiko dan memberikan momen yang diharapkan, sementara penjadwal yang diterapkan memberikan pengamatan resmi mengenai apakah suatu tindakan akan dimulai.
Kesimpulan: jadwal hanya lengkap dengan zonanya — buat kolom di generator, lalu catat zona waktu di sampingnya
Suatu jadwal secara operasional tidak lengkap tanpa konteks zona meskipun kelima bidangnya sudah lengkap secara sintaksis. ToolAcre mewakili kebenaran itu dengan menyimpan zona di pemilih terpisah dan menampilkan daftar jam dinding yang dihasilkan. Ekspresi yang disalin saja tidak dapat memberikan pilihan.
Rekam ekspresi dan zona bersama-sama, verifikasi konfigurasi target, dan kunjungi kembali kandidat di dekat perubahan offset. Generator membuat dan menjelaskan jadwal; itu tidak mengatur jam server, menulis arahan zona waktu atau menjanjikan eksekusi. Batasan tersebut membuat pratinjau tetap berguna tanpa melebih-lebihkan kontrol.