Jawaban:
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
.
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.
/etc/localtime
belum ada. Jika ada dan merupakan softlink ke /usr/share/zoneinfo/whatever
, itu diambil sebagai basis dan itu /etc/localtime
diperbarui sesuai, menimpa perubahan Anda.
Untuk mengeditnya secara tidak interaktif pada versi Debian dan Ubuntu terbaru (Stretch / Xenial dll.), Anda perlu menghapus /etc/localtime
juga, jika tidak /etc/timezone
akan 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.
TL; DR
echo "TZ=Etc/UTC" >> /etc/environment
tzconfig
di mana Etc/UTC
zona 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 tzselect
untuk mencari tahu zona waktu mana yang sebenarnya ada (atau cukup telusuri /usr/share/zoneinfo
direktori).
Dalam sistem POSIX, TZ
harus 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.
TZ
dalam file profil Anda menciptakan symlink? Itu tidak terdengar benar sama sekali dalam pengalaman saya. Mungkin maksud Anda, "Pastikan juga untuk membuat symlink ..."?
$TZ
variabel dibaca oleh glibc
fungsi: gnu.org/software/libc/manual/html_node/TZ-Variable.html
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/localtime
versi daripada satu set di TZ
...