Mengatur Zona Waktu dengan skrip otomatis

20

Saya menulis skrip untuk mengotomatiskan pengaturan instalasi slicehost baru. Di dunia yang sempurna, setelah saya memulai skrip, itu hanya akan berjalan, tanpa perhatian dari saya. Saya telah berhasil, dengan satu pengecualian.

Bagaimana cara mengatur zona waktu, secara permanen (bertahan hidup reboot) dan waras (sesuaikan dengan waktu standar dan waktu musim panas, jadi tidak hanya memaksakan tanggal) ... cara yang tidak memerlukan input dari saya?

Saat ini, saya menggunakan

 dpkg-reconfigure tzdata

Ini sepertinya tidak memiliki cara untuk memaksa parameter ke dalamnya. Ini menuntut input pengguna.


EDIT: Saya mengedit di sini, daripada berkomentar, karena komentar sepertinya tidak mengizinkan blok kode.

Inilah kode aktual yang akhirnya saya dapatkan, berdasarkan komentar Rudedog di bawah. Saya juga memperhatikan bahwa ini tidak memperbarui / etc / timezone. Saya tidak yakin siapa yang menggunakannya, tetapi kalau-kalau ada yang tahu, saya juga mengaturnya.

TIMEZONE="America/Los_Angeles"      
echo $TIMEZONE > /etc/timezone                     
cp /usr/share/zoneinfo/${TIMEZONE} /etc/localtime   # This sets the time
Tom
sumber

Jawaban:

18

Anda harus dapat melakukan ini dengan

cp /usr/share/zoneinfo/America/Los_Angeles /etc/localtime

Ganti zona waktu yang sesuai dalam perintah di atas.

Rudedog
sumber
1
Anda harus symlinking yang tidak menyalin
Zypher
1
Dia menggunakan Debian. dpkg-reconfigure tzdatamembuat salinan, bukan symlink. Saya percaya alasannya adalah karena / usr / share mungkin tidak dipasang pada saat boot.
Rudedog
Menurut bagian teknis dari manual tzconfig untuk Debian:> Pekerjaan yang dilakukan oleh tzconfig sebenarnya cukup sederhana. Itu hanya memperbarui tautan / etc / localtime untuk menunjuk ke zona waktu yang benar diinstal di / usr / share / zoneinfo /.
brent
1
tzconfig tidak digunakan lagi pada lenny untuk mendukung dpkg-reconfigure tzdata dan tidak akan benar-benar melakukan apa pun. Anda dapat memverifikasi bahwa itu menyalin alih-alih symlink dengan menjalankan dpkg-mengkonfigurasi ulang tzdata dan melihat hasilnya.
Rudedog
3

Di Ubuntu 12,04 hal-hal berikut bermanfaat bagi saya:

# http://manpages.ubuntu.com/manpages/precise/man7/debconf.7.html
export DEBCONF_NONINTERACTIVE_SEEN=true DEBIAN_FRONTEND=noninteractive
echo "Europe/Berlin" > /etc/timezone
dpkg-reconfigure tzdata
Schlomo
sumber
1
Metode ini tampaknya tidak berfungsi lagi bugs.launchpad.net/ubuntu/+source/tzdata/+bug/1554806
Peter Gibson
Bekerja di Ubuntu 14.04.
SuB
3

Coba ini:

echo "Europe/London" > /etc/timezone
dpkg-reconfigure -f noninteractive tzdata
Amadu Bah
sumber
Meskipun kode dihargai, itu harus selalu memiliki penjelasan yang menyertainya. Ini tidak harus lama tetapi diharapkan.
peterh mengatakan mengembalikan Monica
3
Metode ini tampaknya tidak berfungsi lagi bugs.launchpad.net/ubuntu/+source/tzdata/+bug/1554806
Peter Gibson
2

Perbarui /etc/localtimesymlink untuk menunjuk ke zona waktu yang benar di/usr/share/zoneinfo/

brent
sumber
Perhatikan bahwa jika Anda menggunakan symlink dan Anda /usrdipasang pada partisi yang terpisah, apa pun yang dimulai sebelum /usrdipasang tidak akan memiliki zona waktu yang benar. Sebagian besar distro saat ini, termasuk Debian, menyalin daripada symlink.
Rudedog
1

Berlari ke dalam ini sendiri. Berikut ini adalah konfigurasi lengkap untuk melakukan hal ini dengan benar (ini adalah kumpulan komentar di sini dan pertanyaan ini ):

#Set time zone and time
echo "tzdata tzdata/Areas select Europe" | debconf-set-selections
echo "tzdata tzdata/Zones/Europe select London" | debconf-set-selections
TIMEZONE="Europe/London"
echo $TIMEZONE > /etc/timezone
cp /usr/share/zoneinfo/${TIMEZONE} /etc/localtime
/usr/sbin/ntpdate pool.ntp.org
Sinkron
sumber
0

tzdatamenggunakan debconf untuk menjawab pertanyaan itu, jadi Anda perlu mengisinya terlebih dahulu. Ada beberapa cara untuk melakukan ini, yang paling mudah adalah dengan preseed jawaban selama instalasi . Selain itu, Anda dapat mengatur basis data default untuk digunakan debconf, lihat halaman debconf(7)manual bagaimana melakukannya.

TRS-80
sumber
-2

Juga pastikan ntpd diinstal dan dijalankan.

yum install ntpd
ntpdate pool.ntp.org
service ntpd start
Iraklis
sumber