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

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.


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



2

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


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

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.


-2

Juga pastikan ntpd diinstal dan dijalankan.

yum install ntpd
ntpdate pool.ntp.org
service ntpd start
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.