Alat pembangun · Penjana Crontab
Cron dan waktu siang: mengapa kerja 02:30 boleh melangkau atau berjalan dua kali
· Mengapa ia penting
cron zon waktu penjimatan siang
Dua kali setahun jam dinding melonjak, dan kerja cron dijadualkan dalam celah atau pertindihan berkelakuan di luar jangkaan. Siaran ini menerangkan perkara yang dilakukan oleh crons yang berasal dari Vixie, perkara yang dilakukan oleh orang lain dan cara menjadualkannya.
Calon pratonton yang hilang boleh berlaku apabila zon yang dipilih tidak mempunyai masa jam dinding sedemikian
Waktu jam dinding harian boleh tidak hadir pada tarikh apabila zon waktu yang dipilih menggerakkan jamnya ke hadapan. ToolAcre mewakili kes itu dengan tidak memulangkan seketika untuk minit tempatan yang tidak wujud dan melangkaunya dalam senarai yang dijalankan seterusnya. Ungkapan itu kekal sah; satu calon kalendar tidak boleh ditukar menjadi seketika sebenar dalam zon itu.
Tingkah laku ini dilaksanakan dalam `wallClockToEpoch`, yang menukar tarikh dan masa setempat yang dicadangkan, memformatkan keputusan kembali dalam zon yang sama dan membandingkan setiap komponen. Ketakpadanan mengembalikan null. `nextRuns` mengabaikan calon batal dan meneruskan cariannya, menghalang masa berdekatan yang direka-reka daripada muncul seolah-olah ia betul-betul sepadan dengan jadual.
Dua peristiwa — musim bunga ke hadapan yang menghilangkan satu jam dan musim luruh jatuh ke belakang yang mengulangi satu jam
Perubahan jam mencipta dua kes konseptual: jurang ke hadapan dengan masa dinding yang tidak pernah berlaku, dan pertindihan ke belakang di mana beberapa label berlaku lebih daripada sekali. Repositori mempunyai ujian untuk mengekalkan waktu tempatan harian merentasi perubahan hadapan dan untuk mengetepikan masa musim bunga yang tidak wujud. Ia tidak mengandungi suite ujian dasar pertindihan yang lengkap.
Sempadan bukti itu penting kerana pelaksanaan penjadual boleh membuat pilihan yang berbeza. Artikel ini menerangkan algoritma pratonton pelayar, bukan tingkah laku daemon universal. Sebelum bergantung pada tugasan berulang semasa peralihan jam, baca dan uji penjadual sebenar pada hos sasaran dan bukannya mempromosikan pratonton menjadi janji pelaksanaan.
ToolAcre meninggalkan masa tempatan yang tidak wujud; ia tidak memodelkan setiap dasar daemon terbitan Vixie
Buku kerja itu mendakwa bahawa daemon terbitan Vixie tertentu menjalankan kerja melangkau selepas melompat dan menyekat pendua. ToolAcre tidak melakukan kedua-duanya dalam kod pratontonnya: ia mengetepikan calon yang komponen tempatannya tidak boleh pergi balik. Tiada pakej daemon digunakan, dan tiada dasar mengejar dimodelkan. Oleh itu, tuntutan operasi tersebut diperbetulkan dan bukannya diulang.
Contoh London yang diuji mencari 01:30 sekitar perubahan 2026 Mac. Oleh kerana minit tempatan itu tidak wujud pada tarikh peralihan, hari yang dikembalikan ialah tarikh sah berikut. Ini membuktikan kelakuan senarai laluan itu sendiri. Ia tidak menetapkan apa yang dilakukan oleh proses cron yang dipasang secara berasingan dengan baris yang telah disimpan.
Tingkah laku penjadualan kad liar dalam daemon luaran ialah bukti repositori di luar
Bintang dikembangkan ke setiap nilai yang dibenarkan oleh penghurai, tetapi penukaran jam dinding kemudiannya masih menentukan sama ada tarikh masa tertentu memetakan kepada sekelip mata. ToolAcre tidak mempunyai peraturan daemon luaran yang berasingan untuk "kerja kad liar". Semua calon melalui carian kalendar dan kod penukaran zon yang sama.
Penerangan kekal tatabahasa semata-mata: `* * * * *` dibaca setiap minit, manakala medan minit berperingkat menerima perkataan langkah. Ayat tersebut tidak menceritakan dasar peralihan. Gunakan senarai larian seterusnya untuk contoh pengiraan alat dan jangan membuat kesimpulan jaminan penangkapan, cuba semula atau penindasan pendua daripada prosa sahaja.
Pelaksanaan lain tidak disimpulkan daripada pratonton pelayar ini
Pelaksanaan zon bergantung pada `Intl.DateTimeFormat` data yang didedahkan oleh pelayar atau masa jalan Node. ToolAcre mengesahkan nama zon IANA yang dibekalkan, menawarkan senarai enjin yang disokong apabila tersedia dan termasuk UTC. Ia tidak memeriksa BusyBox, pengaturcara kontena atau produk cloud cron.
Apabila penjadual lain tidak bersetuju, anggap itu sebagai soalan dialek dan masa jalan. Catatkan versinya, konfigurasi zon dan tingkah laku peralihan yang diperhatikan. Pratonton pelayar masih berguna sebagai perbandingan yang telus, tetapi kodnya tidak dapat menjawab dasar yang digunakan oleh perkhidmatan lain atau sama ada perkhidmatan itu mencuba semula kerja yang terlepas.
Contoh yang berjaya: pilih masa dinding dan periksa calon yang dikira ToolAcre
Kaedah kerja yang lebih selamat ialah memilih zon penempatan, masukkan ungkapan harian yang dicadangkan dan periksa tarikh sekitar peralihan seterusnya yang diketahui oleh persekitaran tersebut. Jika calon yang diperlukan tidak hadir, pilih masa dinding lain atau dasar penjadual yang didokumenkan dengan jelas oleh sasaran. Jalankan semula pratonton selepas menukar jam.
Sumber termasuk pratetap di 02:30, tetapi pratetap ialah contoh, bukan pengesyoran universal. Kesahihannya bergantung pada kalendar dan zon yang dipilih. Tetingkap lima hasil ToolAcre mungkin tidak menjangkau peralihan yang jauh, jadi pilih konteks permulaan yang sesuai dalam ujian semasa mengaudit gelagat pelaksanaan.
Pemilihan zon adalah sebahagian daripada pratonton ini dan dibincangkan di sini sahaja sebagai tingkah laku alat
Tidak seperti pemisahan buku kerja, pengendalian zon adalah sebahagian daripada pratonton alat ini. Panel bertanya "Tunjukkan larian seterusnya" dan memberi amaran bahawa mesin yang menjalankan cron mungkin menggunakan zon berbeza daripada pembaca. Memilih zon mengubah seketika yang terhasil sambil mengekalkan medan jam dinding ungkapan itu.
Pemilihan sahaja mengkonfigurasi pengiraan pelayar. Ia tidak menulis arahan zon waktu, mengemas kini pelayan atau membenamkan pilihan dalam ungkapan yang disalin. Kekalkan zon yang dimaksudkan dalam dokumentasi penggunaan bersebelahan, kemudian konfigurasikan penjadual sebenar melalui mekanisme yang terbukti untuk persekitaran tersebut.
Bawa pulang: pratonton dalam zon yang dimaksudkan tanpa menganggap senarai sebagai jaminan pelaksanaan
Senarai larian seterusnya ialah keluaran model daripada lima medan, segera permulaan, aritmetik kalendar dan data zon pelayar. Ia berharga untuk mengesan masa yang tidak wujud dan syif jam yang tidak disengajakan. Ia kekal bukan jejak daemon mahupun bukti bahawa arahan dilaksanakan.
Gunakan pratonton untuk mengenal pasti masa dinding yang berisiko, kemudian sahkan penjadual sasaran di sempadan peralihan. Janji boleh dipertahankan ToolAcre adalah sempit: pekerjaan harian kekal pada waktu tempatan yang dipilih apabila waktu itu wujud dan calon tempatan yang tidak wujud akan ditinggalkan. Segala-galanya di luar itu adalah milik sistem yang digunakan.