使用自动化脚本设置时区

我正在编写脚本来自动设置新的slicehost安装。 在一个完美的世界里,当我开始剧本之后,它就会运行,而我却不在意。 除了一个例外,我已经成功了。

如何设置时区,永久(重新生存)和理智(调整标准和夏令时,所以不要只是强制date)…方式,不需要我的input?

目前,我正在使用

dpkg-reconfigure tzdata 

这似乎没有任何方法来强制参数。 它要求用户input。


编辑:我在这里编辑,而不是评论,因为评论似乎不允许代码块。

下面是我结束的实际代码,基于下面的Rudedog的评论。 我也注意到这不会更新/ etc / timezone。 我不确定是谁使用的,但如果有人这样做,我也是这样设置的。

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

    你应该可以做到这一点

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

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

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

    在Ubuntu 12.04上,下面这个对我来说是个窍门:

     # 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 

    尝试这个:

     echo "Europe/London" > /etc/timezone dpkg-reconfigure -f noninteractive tzdata 

    自己跑进这个。 这是一个完整的configuration如何做到这一点(这是这里和这个问题的意见汇总):

     #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 

    tzdata使用debconf来回答这个问题,所以你需要预先填充它。 有几种方法可以做到这一点,最简单的方法是在安装过程中预先给出答案 。 除此之外,您可以为debconf设置一个默认数据库,请参阅debconf(7)联机帮助页。

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

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