Bagaimana cara mengatur ulang zona waktu secara permanen di Debian?

29

Dreamhost tampaknya berpikir bahwa kami menyukai PDT, meskipun berada di Midwest. Bagaimana cara mengubah zona waktu?

Elynnaie
sumber

Jawaban:

73

Alat yang menurut saya lebih mudah digunakan adalah dpkg-reconfigure. Menggunakan:

sudo dpkg-reconfigure tzdata

Anda akan diberikan banyak pilihan, termasuk beberapa yang tidak termasuk tzselect.

Ynhockey
sumber
Manfaat melakukannya dengan cara ini adalah Anda melakukannya dengan cara yang dapat direproduksi dan membatasi peluang untuk melakukan sesuatu yang salah seperti memasukkan zona waktu yang tidak ada.
Mogget
1
Ini adalah hal yang baik, tetapi jika Anda memerlukan opsi non-interaktif (dan karenanya dapat skrip), lihat jawaban saya di bawah ini.
mc0e
14

Agaknya ini agak terlambat untuk OP, dan lebih ditujukan untuk pencari lain yang tiba di sini.

Jika Anda membutuhkan solusi non-interaktif, coba solusi ini dari mengubah zona waktu dengan dpkg-mengkonfigurasi ulang tzdata dan debconf-set-selection

echo "Europe/Zurich" > /etc/timezone 
dpkg-reconfigure -f noninteractive tzdata

Anda dapat mengetahui zona waktu Anda dengan mencari-cari di / usr / share / zoneinfo. Sebenarnya perintah dpkg-mengkonfigurasi ulang di atas menyalin file yang sesuai dari sana ke / etc / localtime. Saya dulu hanya melakukannya secara manual, dan sepertinya berfungsi dengan baik.

Jangan terlalu terkejut jika proses yang berjalan lama tidak menerima perubahan. misal cap waktu log Apache. Pertimbangkan apakah itu penting, dan karenanya apakah Anda perlu memulai kembali proses yang berjalan atau bahkan reboot.

mc0e
sumber
3
Berhati-hatilah agar agar ini berfungsi, ini merupakan persyaratan yang /etc/localtimebelum ada. Jika ada dan merupakan softlink ke /usr/share/zoneinfo/whatever, itu diambil sebagai basis dan itu /etc/localtimediperbarui sesuai, menimpa perubahan Anda.
Multisync
11

Untuk mengeditnya secara tidak interaktif pada versi Debian dan Ubuntu terbaru (Stretch / Xenial dll.), Anda perlu menghapus /etc/localtimejuga, jika tidak /etc/timezoneakan ditimpa.

echo 'Europe/Zurich' > /etc/timezone 
rm /etc/localtime
dpkg-reconfigure -f noninteractive tzdata

Jawaban ini didasarkan pada jawaban mc0e '. Saya tidak dapat menambahkan komentar dengan reputasi saya.

Vojta Myslivec
sumber
3

TL; DR

echo "TZ=Etc/UTC" >> /etc/environment
tzconfig

di mana Etc/UTCzona waktu pilihan Anda yang Anda temukan gunakan tzselect.

Versi lebih panjang

Saat Anda menggunakan

dpkg-reconfigure tzdata

informasi zona waktu tidak disimpan setelah reboot. Anda dapat memverifikasi pengaturan Anda dengan

diff -s /etc/localtime /usr/share/zoneinfo/`cat /etc/timezone`

Jika Anda hanya memperbarui /etc/timezone, pembaruan tidak akan konsisten dengan /etc/localtime, jadi lebih baik untuk mengeksekusi

tzconfig

Gunakan tzselectuntuk mencari tahu zona waktu mana yang sebenarnya ada (atau cukup telusuri /usr/share/zoneinfodirektori).

Dalam sistem POSIX, TZharus diutamakan sebelum /etc/localtime:

export TZ='Europe/Berlin'
$ date
Tue Apr 10 08:51:03 CEST 2018
export TZ='Pacific/Efate'
$ date
Tue Apr 10 18:28:33 +11 2018

Menggunakan secara langsung TZ dapat menghemat banyak panggilan sistem karena fungsi terkait tanggal / waktu yang sering digunakan harus mengakses sistem file setiap kali beberapa program menanyakan tanggal saat ini. Ini adalah mikro-optimasi, tetapi cukup sederhana.

Tombart
sumber
Apakah Anda positif mengekspor TZdalam file profil Anda menciptakan symlink? Itu tidak terdengar benar sama sekali dalam pengalaman saya. Mungkin maksud Anda, "Pastikan juga untuk membuat symlink ..."?
amn
1
@ amn Tidak, itu tidak akan membuat symlink, saya sudah mencoba menjelaskannya. Tetapi $TZvariabel dibaca oleh glibcfungsi: gnu.org/software/libc/manual/html_node/TZ-Variable.html
Tombart
bukankah seharusnya begitu echo "TZ=Etc/UTC" >> /etc/environment? Anda melewatkan TZ=bagian ... (jika ada seseorang yang masih menjalankan versi debian kuno). Juga, barang-barang non-aktif seperti daemon masih akan menggunakan /etc/localtimeversi daripada satu set di TZ...
Matija Nalis
@MatijaNalis Ya, Anda benar. Terima kasih atas koreksi!
Tombart