Définition du fuseau horaire avec un script automatisé


20

J'écris des scripts pour automatiser la configuration de nouvelles installations de slicehost. Dans un monde parfait, après avoir commencé le script, il fonctionnerait sans aucune attention de ma part. J'ai réussi, à une exception près.

Comment puis-je définir le fuseau horaire, de manière permanente (survivre au redémarrage) et sain (ajuster pour l'heure standard et l'heure d'été, donc ne pas forcer la date) ... d'une manière qui ne nécessite pas d'entrée de ma part?

Actuellement, j'utilise

 dpkg-reconfigure tzdata

Cela ne semble avoir aucun moyen d'y forcer des paramètres. Cela nécessite une intervention de l'utilisateur.


EDIT: J'édite ici, plutôt que de commenter, car les commentaires ne semblent pas autoriser les blocs de code.

Voici le code réel avec lequel je me suis retrouvé, basé sur le commentaire de Rudedog ci-dessous. J'ai également remarqué que cela ne met pas à jour / etc / timezone. Je ne sais pas qui l'utilise, mais au cas où quelqu'un le ferait, je le fais aussi.

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

Réponses:


18

Vous devriez pouvoir le faire avec

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

Remplacez le fuseau horaire approprié dans la commande ci-dessus.


1
vous devriez faire un lien symbolique qui ne copie pas
Zypher

1
Il utilise Debian. dpkg-reconfigure tzdatafait une copie, pas un lien symbolique. Je crois que la raison est que / usr / share peut ne pas être monté au démarrage.
Rudedog

Selon la section technique de la page de manuel tzconfig pour Debian:> Le travail effectué par tzconfig est en fait assez simple. Il met simplement à jour le lien / etc / localtime pour pointer vers le fuseau horaire correct installé dans / usr / share / zoneinfo /.
brent

1
tzconfig est déconseillé sur lenny en faveur de dpkg-reconfigure tzdata et ne fera rien. Vous pouvez vérifier qu'il copie au lieu des liens symboliques en exécutant dpkg-reconfigure tzdata et regardez le résultat.
Rudedog



2

Mettre /etc/localtimeà jour le lien symbolique pour indiquer le fuseau horaire correct dans/usr/share/zoneinfo/


Notez que si vous utilisez un lien symbolique et que votre /usrest monté sur une partition distincte, tout ce qui commence avant d' /usrêtre monté n'aura pas le fuseau horaire correct. La plupart des distributions d'aujourd'hui, y compris Debian, copient plutôt que les liens symboliques.
Rudedog

1

Je me suis lancé moi-même. Voici une configuration complète pour savoir comment faire cela correctement (c'est un agrégat de commentaires ici et cette question ):

#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

tzdatautilise debconf pour répondre à cette question, vous devez donc le préremplir. Il existe plusieurs façons de procéder, la plus simple est de préconfigurer la réponse lors de l'installation . Au-delà de cela, vous pouvez configurer une base de données par défaut à utiliser par debconf, consultez la debconf(7)page de manuel pour savoir comment procéder.


-2

Assurez-vous également que ntpd est installé et fonctionne.

yum install ntpd
ntpdate pool.ntp.org
service ntpd start
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.