Saat dilimini otomatik komut dosyasıyla ayarlama


20

Yeni slicehost kurulumlarını otomatikleştirmek için komut dosyaları yazıyorum. Mükemmel bir dünyada, senaryoyu başlattıktan sonra, benden hiç dikkat çekmeden koşacaktı. Bir istisna dışında başardım.

Zaman dilimini, kalıcı (yeniden başlatmadan sağ) ve aklı başında (standart ve gün ışığından yararlanma saati için ayarlayın, böylece sadece tarihi zorlamak yok) ... benden girdi gerektirmeyen bir şekilde nasıl ayarlayabilirim?

Şu anda kullanıyorum

 dpkg-reconfigure tzdata

Bunun, parametreleri içine zorlamak için herhangi bir yolu yok gibi görünüyor. Kullanıcı girişi gerektirir.


EDIT: Yorumlar kod bloklarına izin vermediği için yorum yapmak yerine burada düzenliyorum.

Rudedog'un aşağıdaki yorumuna dayanarak bulduğum asıl kod. Bunun / etc / timezone güncellemediğini de fark ettim. Bunu kimin kullandığından emin değilim, ama herhangi biri yaparsa, ben de ayarlıyorum.

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

Yanıtlar:


18

Bunu ile yapabilmeniz gerekir

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

Yukarıdaki komutta uygun saat dilimini değiştirin.


1
Eğer kopyalayarak değil sembolik bağlantılarını edilmelidir
Zypher

1
Debian kullanıyor. dpkg-reconfigure tzdatabir sembolik kopya değil, kopya oluşturur. Gerekçenin / usr / share önyükleme zamanında monte edilmemiş olabileceğine inanıyorum.
Rudedog

Debian için tzconfig kılavuzunun teknik bölümüne göre:> tzconfig tarafından yapılan işler aslında oldukça basittir. / Usr / share / zoneinfo / dizininde kurulu olan doğru saat dilimini gösterecek şekilde / etc / localtime bağlantısını günceller.
brent

1
tzconfig, dpkg-reconfigure tzdata lehine lenny'de kullanımdan kaldırılmıştır ve aslında hiçbir şey yapmaz. Dpkg-reconfigure tzdata'yı çalıştırarak sembolik bağlantılar yerine kopyalandığını doğrulayabilir ve sonuca bakabilirsiniz.
Rudedog

3

Ubuntu 12.04'te aşağıdakiler benim için hile yaptı:

# 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

1
Bu yöntem artık işe yaramıyor gibi görünüyor bugs.launchpad.net/ubuntu/+source/tzdata/+bug/1554806
Peter Gibson

Ubuntu 14.04 üzerinde çalışır.
SuB


2

Güncelleme /etc/localtimedoğru saat dilimine noktasına sembolik köprüyü/usr/share/zoneinfo/


Bir symlink kullanırsanız ve /usrayrı bir bölüme bağlanırsanız , monte edilmeden önce başlayan hiçbir şeyin /usrdoğru saat dilimine sahip olmayacağını unutmayın. Debian da dahil olmak üzere bugünkü dağıtımların çoğu symlink yerine kopyalanıyor.
Rudedog

1

Buna kendim girdim. İşte bu hakkın nasıl yapılacağına dair eksiksiz bir yapılandırma (buradaki ve bu sorudaki yorumların toplamıdır ):

#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

tzdatabu soruyu cevaplamak için debconf kullanır, bu yüzden önceden doldurmanız gerekir. Bunu yapmanın birkaç yolu vardır, en kolayı kurulum sırasında cevabı önceden belirlemektir . Bunun ötesinde, debconf(7)debconf'un kullanması için varsayılan bir veritabanı kurabilirsiniz, bunun nasıl yapılacağına ilişkin kılavuz sayfasına bakın .


-2

Ayrıca ntpd'nin kurulu ve çalışıyor olduğundan emin olun.

yum install ntpd
ntpdate pool.ntp.org
service ntpd start
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.