配置本地时间。 dpkg-重新配置 tzdata

配置本地时间。 dpkg-重新配置 tzdata

我用它来配置本地时间:

dpkg-reconfigure tzdata 

它是ncurses 接口。我正在寻找对此进行编程的方法。有没有真正的方法没有用户 ncurses 界面?

如何通过一个 shell 命令更改本地时间?

答案1

我假设您想通过一个 shell 命令更改时区。

timedatectl你的系统上有吗?

如果是这样:

timedatectl status将显示您当前的设置。

timedatectl list-timezones显示可用时区。

timedatectl set-timezone Antarctica/Mawson设置它。

笔记:如果 RTC 配置为本地时间,这也会更新 RTC 时间。

答案2

有没有真正的方法没有用户 ncurses 界面?

echo Antarctica/Mawson >/etc/timezone
dpkg-reconfigure -f noninteractive tzdata

是的,您可以创建一个 shell 命令:

sh -c 'echo Antarctica/Mawson >/etc/timezone && dpkg-reconfigure -f noninteractive tzdata'

:)

有一个漏洞tzdata:某些值通过以下方式标准化dpkg-reconfigure

echo 'US/Central' >/etc/timezone
dpkg-reconfigure -f noninteractive tzdata
# Current default time zone: 'America/Chicago'

echo 'US/Eastern' >/etc/timezone
apt-get install --reinstall tzdata
# Current default time zone: 'America/New_York'

答案3

我每次都采取的方式:

# /bin/ln -fs /usr/share/zoneinfo/Asia/Novosibirsk /etc/localtime

从 Linux 到 BSD 系列,它在任何地方都可以正常工作。

答案4

当您有交互式命令时,始终可以选择使用expect程序:

#!/usr/bin/expect -f
set timeout 360
spawn dpkg-reconfigure tzdata

expect "Geographic area:"

send -- "2\r"

expect "city or region"

send -- "134\r"

这将在标准输出“expect”中查找字符串,然后将“send”中的字符串发送到标准输入。

相关内容