Apakah crond menangani waktu musim panas +1 jam berubah?

16

Akhir pekan lalu kami harus mengubah waktu dari 02:00 menjadi 03:00.

Pertanyaan: Apa yang akan terjadi jika ada cronjob pukul 02:30?

crond adalah solusi yang sangat lama untuk penjadwalan, mungkin harus menanganinya, tetapi tidak tahu caranya.

LoukiosValentine79
sumber

Jawaban:

18

Ini mungkin tergantung pada implementasi cron Anda, tetapi cron Vixie populer menyatakan dalam manual:

cron kemudian bangun setiap menit, memeriksa semua crontab yang tersimpan, memeriksa setiap perintah untuk melihat apakah harus dijalankan pada menit saat ini.

dan

Pertimbangan khusus ada ketika jam diubah kurang dari 3 jam, misalnya pada awal dan akhir waktu musim panas. Jika waktu telah bergerak maju, pekerjaan-pekerjaan yang akan berjalan dalam waktu yang dilewati akan dijalankan segera setelah perubahan. Sebaliknya, jika waktu telah mundur kurang dari 3 jam, pekerjaan-pekerjaan yang jatuh ke dalam waktu yang berulang tidak akan dijalankan kembali.

Hanya pekerjaan yang berjalan pada waktu tertentu (tidak ditentukan sebagai @hourly, atau dengan '*' dalam penentu jam atau menit) yang terpengaruh. Pekerjaan yang ditentukan dengan wildcard dijalankan berdasarkan waktu baru dengan segera.

Karena perubahan DST kurang dari 3 jam, program Anda akan berjalan segera setelah jam 3:00 pagi

Saya tidak yakin apakah ini perilaku spesifik Vixie cron, saya ingat ini adalah bagaimana PDP-11 saya bekerja dengan baik di tahun 80-an tetapi saya tidak yakin.

Anthon
sumber
2
Wow, pengetahuan dari tahun 80-an - Angkat topi!
Isaac
aturan praktis: setahun sekali crons Anda dalam rentang jam tidak akan berjalan. setahun sekali crons Anda akan berjalan dua kali. akibat wajar: ini tidak selalu benar. terkait: berhenti menggunakan zona waktu lokal!
tedder42
@ tedder42 tolong berikan referensi, klaim Anda bertentangan dengan dokumentasi dan perilaku cron yang sebenarnya.
Anthon
Kasus anekdotal itu merujuk 02:00 dan 03:00 dan tidak memiliki relevansi dengan pertanyaan (yang mengacu pada 02:30) pm. Referensi Anda mungkin perilaku (lama) yang menarik, itu tidak sesuai dengan pengalaman saya. Dan menjalankan server tanpa zona waktu memiliki masalah sendiri.
Anthon
2

Solusi terbaik adalah menjalankan komputer Anda dengan jam perangkat keras diatur ke UTC, (Waktu Universal Terkoordinasi), AKA GMT atau Zulu Time dan hanya mengubah cara waktu ditampilkan dengan mengatur zona waktu setempat untuk memungkinkan Day Light Saving waktu untuk mengambil alih.

Pada SUSE Linux, dan mungkin sebagian besar lainnya, jika Sistem Jam Hardware -> Lingkungan -> Jam -> HWCLOCK diatur ke UTC dengan flag -u lalu dan zona waktu Anda diatur ke tempat Anda berada, sistem akan secara otomatis menampilkan waktu lokal dengan koreksi DST untuk Anda.

Ini memiliki sejumlah keunggulan:

  • Anda tidak perlu menyesuaikan jam secara manual untuk perubahan DST lagi
  • Tab CRON akan disimpan di dan dijalankan pada waktu UTC
  • Jika suatu file, misalnya log, ditulis pada pukul 01:30 sebelum akhir DST dan yang lain pada 01:20 setelah akhir DST, file tersebut akan tetap "Baru" daripada yang lain karena cap waktu file akan menjadi UTC dan baru saja diterjemahkan untuk tampilan berdasarkan zona waktu saat ini pada waktu tampilan.

Untuk informasi lebih lanjut, ketikkan man hwclockterminal.

Steve Barnes
sumber
2
Nitpick kecil. UTC bukan "Konstan Waktu Universal". UTC berarti Waktu Universal Terkoordinasi
fpmurphy