使用自动脚本设置时区


20

我正在编写脚本来自动设置新的slicehost安装。在理想的情况下,启动脚本后,脚本便会运行,而不会引起我的注意。我成功了,除了一个例外。

我该如何设置时区,以永久性(紧急重启)和健全(调整标准时间和夏令时,这样就不仅仅强迫日期了)……不需要我输入的方式?

目前,我正在使用

 dpkg-reconfigure tzdata

这似乎没有任何强制参数的方法。需要用户输入。


编辑:我在这里编辑,而不是注释,因为注释似乎不允许使用代码块。

根据下面的Rudedog的评论,这是我最终得到的实际代码。我还注意到这不会更新/ etc / timezone。我不确定是谁使用的,但是如果有人使用,我也要设置。

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

Answers:


18

您应该能够做到这一点

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

在上面的命令中替换适当的时区。


1
您应该链接到不要复制
Zypher

1
他正在使用Debian。dpkg-reconfigure tzdata复制,而不是符号链接。我相信其原因是因为/ usr / share可能不会在引导时挂载。
Rudedog

根据tzconfig手册中Debian的技术部分:> tzconfig完成的工作实际上非常简单。它只是更新链接/ etc / localtime以指向/ usr / share / zoneinfo /中安装的正确时区。
布伦特

1
tzconfig在lenny上已被弃用,转而使用dpkg-reconfigure tzdata,实际上将不会执行任何操作。您可以通过运行dpkg-reconfigure tzdata并查看结果来验证它是否复制而不是符号链接。
Rudedog



2

更新/etc/localtime符号链接以指向正确的时区/usr/share/zoneinfo/


请注意,如果使用符号链接并且将/usr其挂载在单独的分区上,则在/usr挂载之前开始的任何操作都不会具有正确的时区。如今,包括Debian在内的大多数发行版都是复制而不是符号链接。
Rudedog

1

自己撞到这个。这是完成此操作的完整配置(此处和此问题中的注释汇总):

#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

tzdata使用debconf回答该问题,因此您需要预先填充它。有几种方法可以做到这一点,最简单的方法是在安装过程中提出答案。除了可以设置供debconf使用的默认数据库外,请参见debconf(7)联机帮助页以了解如何执行此操作。


-2

还要确保已安装并运行ntpd。

yum install ntpd
ntpdate pool.ntp.org
service ntpd start
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.