Saya ingin mengubah zona waktu jam sistem dari terminal.
Ini bisa dilakukan dengan
tzselect
"Yang membuka gui di terminal"
atau
sudo cp /usr/share/zoneinfo/Europe/London /etc/localtime
"yang akan diatur ke gmt"
Tetapi apakah ada cara untuk mengatur zona waktu hanya dengan offset yaitu -1 atau +5 dll?
Saya perlu melakukan ini karena saya sedang menulis aplikasi untuk menyesuaikan timeoffset atau laporan log dan satu-satunya info yang saya miliki adalah IP pengguna. Saya bisa menggunakan webapp untuk menemukan lokasi IP, tapi kemudian saya perlu mengatur offset yang akan mudah JIKA saya bisa mendapatkan offset lokasi, tetapi jika saya perlu menemukan zona dan kota itu akan sangat menyebalkan .
Jika ada yang tahu jawaban bagaimana mengatur jam sistem dengan +/- jam akan lebih bagus.
Jawaban:
Untuk mengubah zona waktu dari terminal, cukup tekan Ctrl+ Alt+ Tdi keyboard Anda untuk membuka Terminal. Saat terbuka, jalankan perintah di bawah ini:
Setelah terbuka, cukup ikuti layar untuk mengubah zona waktu.
sumber
Anda juga dapat menggunakan yang baru
timedatectl
untuk mengatur waktu di 14.04.sumber
ls -R --group-directories-first /usr/share/zoneinfo
. (Berhati-hatilah untuk tidak mengubah atau menghapus file apa pun di sini.) Info lebih lanjut tentangposix
danright
awalan ada di sini .sudo timedatectl set-timezone Etc/UTC
untuk UTC.Anda dapat menggunakan file GMT ± x dalam
/usr/share/zoneinfo/Etc
.sumber
/etc/timezone
.sudo dpkg-reconfigure --frontend noninteractive tzdata
Saya menyadari utas ini agak ketinggalan jaman, tetapi saya mencari solusi yang lebih baik karena saya perlu secara otomatis mengatur zona waktu dalam VM setelah pengguna mengunduhnya dari situs web kami dan menyebarkannya. Inilah yang akhirnya saya dapatkan:
Ini akan meminta geoip.ubuntu.com dari server setelah dimulai pada jaringan baru (skrip saya memeriksa konektivitas terlebih dahulu) dan kemudian mengatur zona waktu server berdasarkan respons.
"Wget -q0 -" memberitahu wget untuk menampilkan hanya hasil ke stdout yang kemudian disalurkan ke variabel $ tz.
Semoga ini bisa membantu seseorang!
sumber
TL; DR
/etc/localtime
adalah tautan simbolis yang menunjuk ke suatu file di/usr/share/zoneinfo/Continent/City
. Dengan mengubah di mana ia menunjuk Anda dapat mengubah zona waktu Anda.Untuk mengubah zona waktu, hapus
/etc/localtime
dan berikan tautan simbolis ke kota yang Anda inginkan. Misalnya,ls -l /etc/localtime
melaporkan bahwa file ini menunjuk ke/usr/share/zoneinfo/America/Denver
. Untuk mengubahnya ke New York, saya lakukansudo rm /etc/localtime
sudo ln -s /usr/share/zoneinfo/America/New_York /etc/localtime
Tangkapan layar di bawah ini memperlihatkan langkah-langkah dan konfirmasi dari
timedatectl
sumber
tzdata
, jadi menyarankan hal yang sama tidak ada gunanya. Kedua,tzdata
apakah hampir sama. Terserah kepada pengguna untuk memutuskan apa yang mereka sukai, jadi itu tidak lebih baik atau lebih buruk - hanya preferensi seseorang./var/lib/dpkg/info/tzdata.list
menyarankan bahwa semua item/usr/share/zoneinfo
datang dengan paket itu, saya akan menganggap Anda perlu menginstal paket untuk memiliki semua item, tetapi terus terang saya tidak yakin, ditambah tidak cukup akrab dengan cara ini bekerja pada yang lain distribusi. Pertimbangkan mengajukan ini sebagai pertanyaan di Unix & Linux , dan jangan ragu untuk merujuk posting ini jika Anda ingin memberikan konteks untuk pertanyaan itu.Cara mudah untuk memperbarui zona waktu adalah menggunakan
sudo dpkg-reconfigure tzdata
. Tapi ini tidak mudah ditulis.Jika Anda ingin mengatur zona waktu secara eksplisit melalui skrip (misalnya untuk menyiapkan VM), berikut resepnya:
Tetapkan variabel untuk zona waktu yang Anda inginkan, misalnya satu
Nilai yang valid adalah direktori dan nama file di bawah
/usr/share/zoneinfo
.Maka sederhananya
Perhatikan bahwa keduanya
/etc/localtime
dan/etc/timezone
harus konsisten.Mungkin sekarang reboot untuk mendapatkan semua layanan Anda diperbarui juga (misalnya cron).
sumber
cp
untuk mengatur / etc / localtime. / etc / localtime adalah symlink ke file yang benar. Jika Anda menggunakannyacp
untuk mengubahnya, Anda benar-benar akan menghancurkan isi dari file tzdata apa pun yang sedang ditunjuk, jadi tiba-tiba (misalnya) file tzdata UTC berisi data zona waktu untuk Eropa / London dan bukan untuk UTC, yang buruk (dan menjengkelkan) untuk memecahkan masalah, seperti yang bisa saya katakan dari pengalaman pribadi)Inilah metode yang saya gunakan, yang US-centric karena saya tidak perlu khawatir tentang zona waktu non-AS.
Jika saya perlu menentukan zona waktu saat ini, saya juga melakukan:
atau
Saya kemudian melakukan:
dimana
<_designation_>
salah satu dari berikut ini:AS / AS Timur /
AS Tengah
/ Gunung
AS / Pasifik
AS / Alaska
AS / Aleutian
AS / Arizona
AS / Indiana Timur-
AS / Hawaii
AS / Indiana-Starke
AS / Michigan
AS / Pasifik-Baru
AS / Samoa
MISALNYA:
Penunjukan zona waktu lain dapat ditemukan di sini: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
sumber
tzselect
adalah cara yang baik untuk mendapatkan zona waktuAnda tidak dapat melakukan ini kecuali jika Anda memilih file zona waktu yang ingin Anda sesuaikan dengan setiap zona waktu offset.
Beberapa jawaban menyarankan menggunakan file di / usr / share / zoneinfo / Etc, tetapi masalah dengan ini adalah bahwa mereka DST agnostik.
Jadi, kecuali Anda memilih konfigurasi zona waktu yang cocok dengan setiap offset, atau Anda tidak peduli dengan DST, tidak ada cara untuk melakukannya secara umum.
sumber