当前位置: 首页>>技术教程>>正文


从终端设置时区

,

问题描述

我想从终端更改系统时钟的时区。

这可以用来完成

tzselect

“在终端打开gui”

要么

sudo cp /usr/share/zoneinfo/Europe/London /etc/localtime

“这将设置为gmt”

但有没有办法设置时区只有偏移ie.-1或+5等?

我需要这样做,因为我正在编写一个应用程序来调整timeoffset或报告日志,我唯一的信息是用户IP。我可以使用一个web应用程序来查找IP的位置,但是我需要设置偏移量,这很容易,如果我可以得到位置的偏移量,但是如果我需要查找区域和城市,那将是一个真正的痛苦。

如果有人知道如何设置系统时钟+/-小时的答案会很好。

最佳解决办法

要从终端更改时区,只需按键盘上的Ctrl + Alt + T即可打开终端。打开时,运行下面的命令:

sudo dpkg-reconfigure tzdata

一旦打开,只需按照屏幕更改时区即可。

次佳解决办法

您也可以使用新的timedatectl在14.04中设置时间。

sudo timedatectl set-timezone America/New_York

第三种解决办法

您可以使用/usr/share/zoneinfo/Etc中的GMT±x文件。

sudo ln -fs /usr/share/zoneinfo/Etc/GMT$offset /etc/localtime

第四种办法

我意识到这个线程有点过时,但我一直在寻找更好的解决方案,因为我需要在用户从我们的网站下载并部署它后自动设置虚拟机中的时区。这就是我最终的结果:

echo "Setting TimeZone..."
export tz=`wget -qO - http://geoip.ubuntu.com/lookup | sed -n -e 's/.*<TimeZone>\(.*\)<\/TimeZone>.*/\1/p'` &&  timedatectl set-timezone $tz
export tz=`timedatectl status| grep Timezone | awk '{print $2}'`
echo "TimeZone set to $tz"

一旦它在新网络上启动(我的脚本检查连接第一课程),然后根据响应设置服务器的时区,将从服务器查询geoip.ubuntu.com。

“wget -q0 – ”告诉wget只将结果输出到标准输出,然后输出到$ tz变量。

希望它能帮助别人!

第五种办法

更新时区的简单方法是使用sudo dpkg-reconfigure tzdata。但是这不是很容易编写脚本。

如果你想通过脚本明确地设置时区(比如设置虚拟机),下面是一个配方:

为所需的时区设置一个变量,例如之一

tz=Europe/London
tz=America/Anchorage
tz=Etc/GMT+6

有效值是/usr/share/zoneinfo下的目录和文件名。

然后简单地

sudo cp -vf /usr/share/zoneinfo/$tz /etc/localtime
echo $tz | sudo tee /etc/timezone

请注意,/etc/localtime/etc/timezone必须保持一致。

现在可能重新启动以使所有服务也得到更新(例如cron)。

第六种办法

长话短说 /etc/localtime是一个指向/usr/share/zoneinfo/Continent/City中文件的符号链接。通过改变它的位置可以改变你的时区。

为了更改时区,请删除/etc/localtime并将符号链接分配给所需的城市。例如,ls -l /etc/localtime报告此文件指向/usr/share/zoneinfo/America/Denver。我改变它到纽约

  1. sudo rm /etc/localtime

  2. sudo ln -s /usr/share/zoneinfo/America/New_York /etc/localtime

  3. 等一下我的时钟才能更新

下图显示了timedatectl的步骤和确认

timezone,ubuntu

第七种办法

下面是我使用的方法,即US-centric,因为我不需要担心non-US时区。

如果我需要确定当前的时区,我要么:

cat /etc/timezone  

要么

sudo hwclock --show  

然后我做:

timedatectl set-timezone <_designation_>

其中<_designation_>是以下之一:

美国/美国东部/美国中部/山区美国/太平洋美国/阿拉斯加美国/阿留申美国/亚利桑那美国/East-Indiana美国/夏威夷美国/Indiana-Starke美国/密歇根州美国/Pacific-New美国/萨摩亚

例如。:

timedatectl set-timezone US/Eastern  

其他时区名称可以在这里找到:https://en.wikipedia.org/wiki/List_of_tz_database_time_zones

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/281.html,未经允许,请勿转载。