Bagaimana kita dapat secara otomatis mengatur zona waktu default sistem di Linux menggunakan Internet? Seperti yang saya lihat, server NTP hanya dapat memperbarui waktu, tetapi bukan zona waktu. Apakah ada server yang dapat mengubah zona waktu?
Bagaimana kita dapat secara otomatis mengatur zona waktu default sistem di Linux menggunakan Internet? Seperti yang saya lihat, server NTP hanya dapat memperbarui waktu, tetapi bukan zona waktu. Apakah ada server yang dapat mengubah zona waktu?
Jawaban:
Saya menulis sebuah program beberapa waktu lalu yang melakukan ini: tzupdate .
Anda dapat melihat apa yang akan mengatur zona waktu Anda (tanpa benar-benar mengaturnya) dengan menjalankan tzupdate -p
:
$ tzupdate -p
Europe/Malta
Anda dapat mengaturnya menjadi nyata dengan menjalankannya tzupdate
sebagai root.
$ sudo tzupdate
Europe/Malta
$ date
Thu 12 Sep 05:52:22 CEST 2013
Ini bekerja dengan:
/etc/localtime
untuk menunjuk ke file zoneinfo untuk zona waktu ituIni adalah utas lama, tetapi masih relevan untuk kubuntu 1710 yang tidak mengubah zona waktu secara otomatis. Saya menggunakan solusi Chris Down untuk tzupdate, tetapi memastikan juga bahwa itu dipicu ketika sistem mencoba terhubung ke jaringan (wifi atau lainnya). Ini mengasumsikan bahwa Anda menggunakan Network Manager.
Buka terminal terlebih dahulu.
Instal tzupdate
sudo apt install python-pip
pip install -U tzupdate
Kemudian pastikan itu dapat diakses oleh semua pengguna
sudo cp -R ~/.local/lib/python2.7/site-packages/. /usr/lib/python2.7/.
sudo cp /home/marta_riba/.local/bin/tzupdate /usr/local/bin/tzupdate
Uji apakah itu berhasil
sudo tzupdate
Yang perlu kita lakukan adalah memastikan bahwa ini dapat diakses oleh semua pengguna
sudo su -
tzupdate
yang menjatuhkan Anda sebagai root dan kemudian memeriksa bahwa perintah mengubah zona waktu Anda. Kemudian pastikan Anda keluar untuk kembali sebagai pengguna normal
exit
Pastikan tzupdate dapat dijalankan dengan sudo tanpa kata sandi. Ini diperlukan untuk langkah selanjutnya ketika kami memicu ini dari networkmanager yang menjalankan ini di latar belakang. Ketik ini di terminal untuk mengedit file sudoers
sudo visudo
Tambahkan baris ini di akhir file
ALL ALL=(root) NOPASSWD: /usr/local/bin/tzupdate
Tekan CTRL-X dan kemudian tekan Y dan kemudian ENTER untuk menyimpan perubahan
Kami kemudian memastikan bahwa NetworkManager selalu memanggil ini setelah memicu perubahan koneksi jaringan (mis. Saat menghubungkan ke wifi). Untuk ini kami membuat file bernama tzupdate di folder dispatcher.d yang hanya memanggil sudo tzupdate. File membutuhkan izin yang dapat dieksekusi untuk dijalankan
echo 'sudo tzupdate'| sudo tee /etc/NetworkManager/dispatcher.d/99-tzupdate
sudo chmod +x /etc/NetworkManager/dispatcher.d/99-tzupdate
Perhatikan bahwa NetworkManager akan memanggil eksekusi sudo (mis. Sudo tzupdate) yang biasanya akan meminta kata sandi.
Mungkin ada cara yang lebih baik untuk melakukan ini yaitu mendapatkan NetworkManager untuk memanggil ini hanya ketika itu membawa koneksi naik dan tidak juga untuk turun (seperti yang akan dilakukan di atas) - Saya telah mencoba meletakkan skrip di / etc / network / if-up .d tapi ini tidak berhasil untuk saya
Untuk mengujinya di Kubuntu - Ubah zona waktu lokal Anda ke sesuatu yang lain (Buka Plasmoid Tanggal di bilah tugas Anda dan klik kanan dan Pilih 'Sesuaikan Tanggal / Waktu' dan kemudian 'Zona Waktu' dari tab)
Matikan wifi Anda dan nyalakan kembali - Anda akan melihat bahwa setelah terhubung ke wifi, tampaknya menunggu sekitar 30 detik dan kemudian akan berhasil mengubah zona waktu Anda.
Perhatikan bahwa ini belum diuji dengan wifi di mana orang perlu memasukkan kata sandi di halaman web. Semoga fakta bahwa ini berjalan di akhir koneksi jaringan harus menyediakan cukup waktu bagi pengguna untuk memasukkan kredensial - jika tidak, ini mungkin perlu penyesuaian lebih lanjut (periksa apakah ada koneksi, periksa apakah Anda dapat terhubung ke internet, tunggu selama X detik jika tidak dapat terhubung ke internet dan coba lagi kali Y
Tidak jelas apa yang Anda maksud dengan "pembaruan zona waktu".
Unix dan Linux menjaga waktu sebagai jumlah detik sejak 1 Januari 1970, 00:00 UTC. Oleh karena itu jam sistem Unix bebas zona waktu. Zona waktu tidak ada di kernel Linux; hanya ketika aplikasi userspace menampilkan waktu di mana jumlah detik sejak 1970 ditafsirkan menggunakan zona waktu. Biasanya, interpretasi ini dilakukan melalui fungsi C library. Zona waktu dipilih oleh TZ
variabel lingkungan. Definisi zona waktu (yang terdiri dari nama zona waktu, offset dari UTC, tanggal ketika waktu musim panas berlaku, dan offset selama DST) adalah bagian dari GNU libc, dan biasanya dimasukkan dalam distribusi Linux sebagai paket "tzdata". Oleh karena itu, memperbarui definisi zona waktu adalah masalah berjalan apt-get upgrade
, yum update
atau beberapa operasi serupa.
Perhatikan bahwa beberapa perangkat lunak, seperti Java, memiliki file definisi zona waktu sendiri, yang harus diperbarui secara terpisah.
NTP melacak jumlah detik sejak 1 Januari 1900, UTC . Oleh karena itu, NTP, seperti kernel Unix, tidak memiliki konsep zona waktu.