Pertanyaan Pengaturan zona waktu dari terminal


Saya ingin mengubah zona waktu dari 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 disetel ke gmt"

Tapi apakah ada cara untuk mengatur zona waktu hanya dengan offset ie.-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 dapat menggunakan webapp untuk menemukan lokasi IP, tapi kemudian saya harus mengatur offset yang akan mudah JIKA saya hanya bisa mendapatkan offset lokasi, tetapi jika saya perlu mencari zona dan kota itu akan menjadi rasa sakit yang nyata .

Jika ada yang tahu jawabannya bagaimana mengatur jam sistem dengan +/- jam akan sangat bagus.


174
2017-07-22 20:22


asal


Tolong bantu kami untuk mengambil jawaban yang diterima. Kurasa jawaban @ Mitch adalah yang terbaik askubuntu.com/a/323163/22308 - Nam G VU
@NamGVU Tidak, Mitch bukan solusi terbaik, ini adalah jawaban "GUI dalam terminal". Bahkan kata OP "Ini tidak akan bekerja karena saya perlu zona waktu altr dari sebuah program tanpa input pengguna saya memerlukan sebuah perintah yang dapat saya masukkan ke dalam terminal bukan solusi gui", dan itulah tujuan yang paling diinginkan saat mencari "solusi terminal", yang ramah skrip. Collin Anderson lebih baik jika Anda tahu kota, atau Ryan's untuk plain GMT + -n - Xen2050


Jawaban:


Untuk mengubah zona waktu dari terminal, cukup tekan Ctrl+Alt+T di keyboard Anda untuk membuka Terminal. Ketika terbuka, jalankan perintah di bawah ini:

sudo dpkg-reconfigure tzdata

Setelah terbuka, cukup ikuti layar untuk mengubah zona waktu.


274
2017-07-22 22:02



Ini adalah metode yang paling mudah dan paling tidak menyakitkan. - Thomas Ward♦
ini tidak akan berfungsi karena saya perlu zona waktu altr dari sebuah program tanpa input pengguna saya memerlukan sebuah perintah yang dapat saya masukkan ke dalam terminal bukan solusi gui terima kasih untuk balasan - user2155009
@ user2155009 sangat mudah solusi non-GUI murni berbasis Terminal Jawaban Collin Anderson. Saya tidak mengerti mengapa ada orang yang memberikan jawaban GUI ke pertanyaan Terminal. Jika kita ingin menggunakan GUI, kita akan menggunakan GUI, tidak meluncurkan Terminal dari GUI, kemudian luncurkan GUI dari Terminal ... - ADTC
Terima kasih!!! ini membantu, karena saya sudah berubah secara manual dll / zona waktu =) suka php.net/manual/en/timezones.php !!! benar-benar identik !!! - Vladimir Ch
@ADTC Persis pikiran saya, downvoted untuk alasan itu. - Elijah Lynn


Anda juga bisa menggunakan yang baru timedatectl untuk mengatur waktu di 14.04.

sudo timedatectl set-timezone America/New_York

141
2017-09-15 15:43



Bagaimana Anda menginstalnya di ubuntu? - Division by Zero
Ini diinstal secara default pada 14.04. - Collin Anderson
Untuk melihat semua opsi yang tersedia, Anda dapat menjalankan ls -R --group-directories-first /usr/share/zoneinfo. (Hati-hati jangan mengubah atau menghapus file apa pun di sini.) Info lebih lanjut tentang posix dan right awalan adalah sini. - ADTC
Ini bekerja! ... - Dan Nissenbaum
Menggunakan sudo timedatectl set-timezone Etc/UTC untuk UTC. - Zoltán


Anda dapat menggunakan GMT +x file dalam /usr/share/zoneinfo/Etc.

sudo ln -fs /usr/share/zoneinfo/Etc/GMT$offset /etc/localtime

17
2017-07-22 20:43



thanks allot for reply im mendapatkan error ln: gagal membuat symbolic link `/ etc / localtime ': File ada secara oboiusly im tidak yakin apa yang saya lakukan anda tahu tutorial yang bagus untuk ini atau bahkan beberapa kata kunci saya bisa google terima kasih saya menggunakan perintah dengan benar? im menggunakan sudo ln / usr / share / zoneinfo / Etc / GMT $ + 1 / etc / localtime untuk mengatur jam ke + 1gmt - user2155009
minitech lupa bendera kekuatan Kurasa begitu -> sudo ln -sf .... - Tele
Ini akan berfungsi, tetapi tidak akan memperbarui nama tz di /etc/timezone. - poolie


Saya menyadari bahwa untaian ini agak kuno, tetapi saya mencari solusi yang lebih baik karena saya perlu secara otomatis mengatur zona waktu di VM setelah pengguna mengunduhnya dari situs web kami dan menyebarkannya. Inilah yang saya berakhir dengan:

echo "Setting TimeZone..."
export tz=`wget -qO - http://geoip.ubuntu.com/lookup | sed -n -e 's/.*<TimeZone>\(.*\)<\/TimeZone>.*/\1/p'` &&  timedatectl set-timezone $tz
export tz=`timedatectl status| grep Timezone | awk '{print $2}'`
echo "TimeZone set to $tz"

Ini akan menanyakan geoip.ubuntu.com dari server setelah dimulai di jaringan baru (skrip saya memeriksa konektivitas pertama saja) dan kemudian mengatur zona waktu server berdasarkan respons.

The "wget ​​-q0 -" memberitahu wget untuk hanya menampilkan hasil ke stdout yang kemudian disalurkan ke variabel $ tz.

Semoga ini membantu seseorang!


16
2017-12-25 03:22



Besar! Pada Ubuntu 16.04 seharusnya "grep zone" dan "print $ 3" ​​sebagai gantinya. - user334639
Saya mengusulkan cli yang berbeda untuk mendapatkan zona waktu. Sedikit lebih bersih dalam pandangan saya: curl -s 'geoip.ubuntu.com/lookup '; | xmllint --xpath '/ Respons / TimeZone / teks ()' - - Darko Miletic


TL; DR  /etc/localtime adalah tautan simbolis yang mengarah ke file di /usr/share/zoneinfo/Continent/City. Dengan mengubah tempat Anda dapat mengubah zona waktu Anda.

Untuk mengubah zona waktu, hapus /etc/localtime dan menetapkan tautan simbolik ke kota yang Anda inginkan. Contohnya, ls -l /etc/localtime melaporkan bahwa file ini menunjuk ke /usr/share/zoneinfo/America/Denver. Untuk mengubahnya ke New York, saya lakukan

  1. sudo rm /etc/localtime
  2. sudo ln -s /usr/share/zoneinfo/America/New_York /etc/localtime
  3. Tunggu sebentar agar jam saya diperbarui

Screenshot di bawah menunjukkan langkah-langkah dan konfirmasi dari timedatectl

enter image description here


10
2018-05-06 02:21



sangat menyenangkan untuk memahami apa yang terjadi di balik tirai, tetapi tidakkah Anda pikir akan lebih baik untuk menyarankan alat yang ditentukan untuk ini seperti dpkg-reconfigure tzdata, dll.? - Patrick Cornelissen
@PatrickCornelissen Pertama-tama, ada jawaban untuk tzdata sudah, jadi menyarankan hal yang sama tidak ada gunanya. Kedua, tzdata tidak banyak yang sama. Terserah pengguna untuk memutuskan apa yang mereka sukai, jadi tidak lebih baik atau lebih buruk - hanya preferensi seseorang. - Sergiy Kolodyazhnyy
Nah, bekerja "melawan" alat distribusi sering mengarah ke masalah, jadi saya akan menghindari pendekatan Anda jika memungkinkan, tetapi cukup adil solusi Anda akan berhasil (saat ini) - Patrick Cornelissen
Solusi ini yang saya mengerti, bekerja di berbagai distribusi yang berbeda. Tetapi masih membutuhkan database zona waktu yang tersedia di direktori / usr / share / zoneinfo. Apakah ada cara untuk mendapatkan database zona waktu tanpa menginstal paket tzdata? - andho
@andho Sejak /var/lib/dpkg/info/tzdata.list menunjukkan bahwa semua item dalam /usr/share/zoneinfo datang dengan paket itu, saya akan berasumsi Anda perlu menginstal paket untuk memiliki semua item, tapi terus terang saya tidak yakin, dan tidak cukup akrab dengan cara kerjanya pada distro lain. Pertimbangkan untuk menanyakan ini sebagai pertanyaan Unix & Linux, dan jangan ragu untuk mereferensikan posting ini jika Anda ingin memberikan konteks untuk pertanyaan itu. - Sergiy Kolodyazhnyy


Cara mudah untuk memperbarui zona waktu adalah dengan menggunakan sudo dpkg-reconfigure tzdata. Tapi ini tidak mudah ditulis.

Jika Anda ingin menetapkan zona waktu secara eksplisit melalui skrip (mis. Untuk menyiapkan VM), berikut ini resepnya:

Setel variabel untuk zona waktu yang Anda inginkan, mis. satu dari

tz=Europe/London
tz=America/Anchorage
tz=Etc/GMT+6

Nilai yang valid adalah direktori dan nama file di bawah /usr/share/zoneinfo.

Lalu sederhananya

sudo cp -vf /usr/share/zoneinfo/$tz /etc/localtime
echo $tz | sudo tee /etc/timezone

Perhatikan keduanya /etc/localtime dan /etc/timezone harus konsisten.

Mungkin sekarang reboot untuk mendapatkan semua layanan Anda diperbarui juga (misalnya cron).


10
2018-05-13 18:13



-1: Jangan pernah digunakan cp untuk mengatur / etc / localtime. / etc / localtime adalah a symlink ke file yang benar. Jika Anda menggunakan cp untuk mengubahnya, Anda benar-benar akan mengkritik isi file tzdata apa pun yang saat ini dituju, jadi tiba-tiba (misalnya) file UTC tzdata berisi data zona waktu untuk Eropa / London, bukan untuk UTC, yang buruk (dan menjengkelkan untuk memecahkan masalah, seperti yang bisa saya katakan dari pengalaman pribadi) - Foogod


Inilah metode yang saya gunakan, yang berpusat di AS karena saya tidak perlu khawatir tentang zona waktu non-AS.

Jika saya perlu menentukan zona waktu saat ini, saya juga melakukan:

cat /etc/timezone  

atau

sudo hwclock --show  

Saya kemudian melakukan:

timedatectl set-timezone <_designation_>

dimana <_designation_> adalah salah satu dari yang berikut:

AS / Timur
AS / Tengah
AS / Gunung
AS / Pasifik
AS / Alaska
AS / Aleutian
AS / Arizona
AS / Timur-Indiana
AS / Hawaii
AS / Indiana-Starke
AS / Michigan
AS / Pasifik-Baru
AS / Samoa

MISALNYA.:

timedatectl set-timezone US/Eastern  

Penunjukan zona waktu lainnya dapat ditemukan di sini: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones


3
2018-03-29 19:04





Anda tidak dapat melakukan ini kecuali Anda memilih file zona waktu yang ingin Anda samakan dengan setiap offset zona waktu.

Beberapa jawaban menyarankan menggunakan file di / usr / share / zoneinfo / Etc, tetapi masalah dengan ini adalah bahwa mereka DST agnostik.

Jadi kecuali Anda memilih beberapa konfigurasi zona waktu untuk mencocokkan setiap offset, atau Anda tidak peduli dengan DST, tidak ada cara untuk melakukannya secara umum.


0
2017-08-23 17:52