Bahasa Melayu

Alat pembangun · Penjana Crontab

Sebab cron tidak mempunyai medan zon waktu: waktu tempatan, CRON_TZ dan bekas dalam UTC

· Latar belakang

cron zon waktu penjadualan

Satu ungkapan lima medan menunjuk ke jam di UTC, Tokyo dan New York
Ilustrasi vektor ToolAcre asal

Ungkapan cron tidak mempunyai zon waktu di dalamnya, jadi lima medan yang sama bermakna detik yang berbeza pada hos yang berbeza. Siaran ini menerangkan yang cron jam menggunakan, sambungan CRON_TZ dan sebab bekas menukar jawapan.

Medan yang sama menghasilkan seketika pratonton yang berbeza apabila zon yang dipilih berubah

`0 9 * * *` mengandungi satu jam tetapi tiada lokasi. Dalam ToolAcre, memilih UTC atau Asia/Tokyo meninggalkan lima medan tidak berubah sambil menukar segera yang diwakili oleh setiap 09:00 calon jam dinding. Oleh itu, laporan boleh muncul selang beberapa jam apabila dua persekitaran mentafsir label tempatan yang sama di zon berbeza.

Panel membuat pergantungan ini jelas dengan pemilih "Tunjukkan seterusnya berjalan dalam". Gunakan zon mesin yang dimaksudkan semasa menyemak jadual, kemudian rekodkan andaian itu di sebelah ungkapan. Pemilihan sahaja mempengaruhi pratonton pelayar; ia tidak dibenamkan dalam teks cron yang disalin.

Ungkapan tidak mengandungi zon; pemilihan jam daemon luaran tidak dikonfigurasikan di sini

Terdapat lima spesifikasi medan, tiada satu pun yang dinamakan zon waktu. `nextRuns` menerima zon sebagai pilihan yang berasingan dan lalai kepada persekitaran hos yang dilihat oleh JavaScript. Pemisahan ini membuktikan bahawa konteks zon adalah luaran kepada ungkapan dalam model ToolAcre.

Buku kerja mendakwa jam mana yang dibaca oleh setiap daemon. Repositori ini tidak boleh mengkonfigurasi atau memeriksa daemon, jadi ia tidak menetapkan tingkah laku universal itu. Ia sahaja boleh menasihati pemadanan zon pratonton dengan tafsiran yang didokumenkan sasaran dan mengesahkan penjadual yang dipasang secara bebas.

Sokongan CRON_TZ berada di luar penghurai ini dan tidak dituntut

`CRON_TZ` tidak dihuraikan. Memasukkannya dalam kotak ungkapan gagal kerana ia bukan lima medan dan tiada kawalan setiap medan menyimpan arahan. Dakwaan buku kerja bahawa satu pelaksanaan menyokongnya manakala yang lain tidak memerlukan sumber tidak ada di sini.

Jika sasaran mendokumenkan arahan zon waktu, konfigurasikan dan ujinya di sana. Jangan mengharapkan ToolAcre untuk mengekalkan arahan semasa menyalin ungkapan. Simpan metadata zon bersebelahan dengan jadual sehingga konfigurasi khusus sasaran disemak dan digunakan.

Semantik persekitaran TZ tidak dimodelkan

Tugasan `TZ` adalah sama di luar skop. Pelayar menggunakan pilihan `timeZone` eksplisit untuk pemformatan dan penukaran, bukan baris persekitaran dalam fail crontab. Ia tidak dapat memberitahu sama ada tugasan mengubah penilaian jadual, output arahan atau tidak pada sistem lain.

Pembetulan ini mengelakkan andaian yang halus tetapi mahal. Nama yang serupa tidak menunjukkan peranan yang sama. Anggap pemilihan zon penjadual dan persekitaran proses sebagai soalan berasingan, dan jawab kedua-duanya daripada pelaksanaan sasaran dan bukannya daripada penjana ekspresi.

Kelalaian kontena dan awan memerlukan bukti sasaran

Bekas dan imej awan tidak diperiksa oleh laluan. Tiada soket Docker, jam hos atau perkhidmatan metadata ditanya. Dakwaan bahawa mereka lalai kepada UTC mungkin benar dalam penggunaan tertentu tetapi tidak boleh digeneralisasikan daripada `Intl.DateTimeFormat` yang dijalankan dalam pelayar pembaca.

Tangkap zon sasaran sebenar melalui alat dan konfigurasi yang didokumenkan. Kemudian pilih nama IANA yang sama dalam ToolAcre apabila tersedia. Senarai zon pelayar mencerminkan perkara yang diketahui oleh enjinnya; ia tidak membuktikan bahawa sasaran mengandungi data atau tetapan zon yang sama.

Contoh berfungsi: pratonton 09:00 dalam dua zon terpilih tanpa penukaran bermusim pengekodan keras

Pastikan `0 9 * * *` tetap dan pratonton satu hasil dalam UTC, kemudian di Amerika/New_York. Setiap senarai menunjukkan 09:00 sebagai masa dinding, tetapi seketika zaman berbeza mengikut pengimbangan zon yang berkenaan. Elakkan daripada menerbitkan satu penukaran jam kekal kerana offset serantau boleh berubah merentas tarikh.

Ujian menunjukkan prinsip ini dengan UTC dan Tokyo tengah malam dan dengan kerja harian London merentasi perubahan hadapan. Gunakan calon langsung untuk tarikh yang disemak. Jika penempatan menukar jadual kepada jam UTC tetap, dokumentasikan had bermusim dan bukannya membayangkan satu nilai mengekalkan 09:00 setempat selama-lamanya.

DST pengendalian calon ialah ToolAcre gelagat pratonton, bukan jaminan daemon

ToolAcre membina calon sebagai komponen kalendar tempatan dan menukarnya melalui data zon pelayar. Masa musim bunga ke hadapan yang tidak wujud akan ditinggalkan dan jam harian biasa kekal sebagai jam tempatan yang sama merentas peralihan yang diuji. Itu adalah fakta pelaksanaan pratonton.

Ia bukan jaminan pelaksanaan untuk daemon atau penjadual awan. Sahkan dasar peralihan tempat kerja akan dijalankan. Pratonton boleh mendedahkan risiko dan menyediakan segera yang dijangkakan, manakala penjadual yang digunakan membekalkan pemerhatian berwibawa sama ada tindakan bermula.

Bawa pulang: jadual sahaja lengkap dengan zonnya — bina medan dalam penjana, kemudian rekod zon waktu di sebelahnya

Jadual adalah tidak lengkap secara operasi tanpa konteks zon walaupun lima medannya lengkap secara sintaksis. ToolAcre mewakili kebenaran itu dengan mengekalkan zon dalam pemilih berasingan dan menunjukkan senarai jam dinding yang terhasil. Ungkapan yang disalin sahaja tidak boleh membawa pilihan.

Rakam ekspresi dan zon bersama-sama, sahkan konfigurasi sasaran dan lawati semula calon berhampiran perubahan offset. Penjana mencipta dan menerangkan jadual; ia tidak menetapkan jam pelayan, menulis arahan zon waktu atau menjanjikan pelaksanaan. Sempadan itu memastikan pratonton berguna tanpa melebihkan kawalan.