如何在Amazon EC2中设置时区?


Answers:


86

它应该与您的桌面Ubuntu进程没有什么不同。看这里

  1. SSH到您的EC2服务器
  2. 执行以下操作(将时区设置为Australia/Adelaide

    $ echo "Australia/Adelaide" | sudo tee /etc/timezone
    Australia/Adelaide
    $ sudo dpkg-reconfigure --frontend noninteractive tzdata
    
    Current default time zone: 'Australia/Adelaide'
    Local time is now:      Sat May  8 21:19:24 CST 2010.
    Universal Time is now:  Sat May  8 11:49:24 UTC 2010.
    

更新资料

您可以使用tzselect实用程序进行浏览。看到这里:http : //manpages.ubuntu.com/manpages/precise/man1/tzselect.1.html

这是一个交互式软件。我的Ubuntu(11.10)拥有它。

您也可以参考这篇维基百科文章

巴西

Brazil/Acre
Brazil/DeNoronha
Brazil/East
Brazil/West

+1,谢谢,我该如何为不同的国家/地区设置时间,例如我必须先设置挪威和巴西的时区。
Gaurav Agarwal

4
我正在收到此回复sudo: dpkg-reconfigure: command not found
Gaurav Agarwal,2012年

您看不到/usr/sbin/dpkg-reconfigure吗?
Nishant

不,我也无法做到。我已经张贴在这里一个相关的问题stackoverflow.com/questions/11935091/...
拉夫阿加瓦尔

4
对于从命令行开始的Ubuntu,以下链接提供了简单的1行命令:askubuntu.com/a/524362/182454
Dan Nissenbaum 2016年

64

更改时间的另一种方法(这是在Amazon EC2 Linux实例上完成的)

删除本地时间文件

sudo rm /etc/localtime

将目录更改为ZoneInfo

cd /usr/share/zoneinfo

此文件夹包含所有时区信息。然后,您只需要软链接到适当的区域。

创建到/ etc / localtime的软链接

sudo ln -s /usr/share/zoneinfo/GB /etc/localtime

这会将您的服务器时区更改为GB


(请确保在应用更改后重新启动apache)
T. Ato

38

通过检查您当前的时区

$ date

要更改它,请运行

$ sudo dpkg-reconfigure tzdata

这将显示地理区域列表。选择以缩小可用时区。接下来选择城市/时区。您已将系统更改为新时区。


1
这次真是万分感谢。它比其他人的答案简单,无痛且步骤少。我尝试了Amazon文档中概述的步骤,但这没有用。这就像一个魅力。
Scott M. Stolz

16

AWS文档中提供了有关在ec2机器中更改时区的信息。请在下面找到详细信息:

更改时区

Amazon Linux实例默认设置为UTC(世界标准时间)时区,但是您可能希望将实例上的时间更改为本地时间或网络中的其他时区。

更改实例的时区

1.确定要在实例上使用的时区。/ usr / share / zoneinfo目录包含时区数据文件的层次结构。浏览该位置的目录结构以查找您所在时区的文件。

[ec2-user ~]$ ls /usr/share/zoneinfo
Africa      Chile    GB         Indian       Mideast   posixrules  US
America     CST6CDT  GB-Eire    Iran         MST       PRC         UTC
Antarctica  Cuba     GMT        iso3166.tab  MST7MDT   PST8PDT     WET
Arctic      EET      GMT0       Israel       Navajo    right       W-   SU
...

此位置上的某些条目是目录(例如America),并且这些目录包含特定城市的时区文件。查找要用于实例的城市(或您所在时区中的城市)。在此示例中,您可以使用洛杉矶的时区文件/ usr / share / zoneinfo / America / Los_Angeles。

2.使用新的时区更新/ etc / sysconfig / clock文件。

使用您喜欢的文本编辑器(例如vim或nano)打开/ etc / sysconfig / clock文件。您需要将sudo与您的编辑器命令一起使用,因为/ etc / sysconfig / clock由root拥有。

b。找到“ ZONE”项,并将其更改为时区文件(忽略路径的“ / usr / share / zoneinfo”部分)。例如,要更改为洛杉矶时区,请将“ ZONE”项更改为以下内容。

ZONE="America/Los_Angeles"

c。保存文件并退出文本编辑器。

3.在/ etc / localtime和您的时区文件之间创建符号链接,以便实例在引用本地时间信息时找到时区文件。

[ec2-user ~]$ sudo ln -sf /usr/share/zoneinfo/America/Los_Angeles /etc/localtime

4.重新启动系统以在所有服务和应用程序中获取新的时区信息。

[ec2-user ~]$ sudo reboot

2
在我的Ubuntu 14.04上没有/etc/sysconfig文件夹
NineCattoRules

@Simone:以上建议适用于Amazon Linux计算机。当您使用ubuntu 14.04时-您是否可以检查这是否对help.ubuntu.com/community/UbuntuTime
Varun

谢谢,我已经发现这个stackoverflow.com/questions/11931566/…有用。但是我不明白的是,我的服务器时间应该设置为Etc / UTC还是应该设置为本地时间或基于实例所在的位置?
NineCattoRules

1
@Simone通常-取决于您的用例,您想要的应用程序默认时间是什么,当您说get current_timestamp等时将在此实例上运行。通常我个人建议您默认设置UTC时区,然后将其转换您需要的任何时区。
Varun

我尝试了一下,由于某种原因它没有起作用。/ etc / sysconfig / clock甚至不存在。幸运的是,我找到了另一种方法,但这显然不适用于所有实例。
Scott M. Stolz

9

上述步骤均不适合我,因此请考虑在此处编写此新答案

# Delete any existing localtime link
sudo rm /etc/localtime
# Update time clock file with ZONE property
sudo vi /etc/sysconfig/clock
#Update the ZONE property to what you want say
ZONE="America/Los_Angeles"
sudo ln -sf /usr/share/zoneinfo/America/Los_Angeles /etc/localtime
sudo reboot

1
只有这种方法对我也有效..浪费了我一生的2个小时TT
亚瑟·梅洛

如果使用ln -f ...,则首先调用rm其引用对象是多余的,反之亦然。
StvnW

6

从RHEL 7管理指南

似乎这可能是REDHAT7上的命令

timedatectl set-timezone "Europe/Stockholm"

要获取所有可用时区,请输入:

timedatectl list-timezone

有关更多信息,请使用

man timedatectrl

6

UBUNTU 16.04的更新的答案:

做:

sudo timedatectl set-timezone America/New_York

更新您的时区。

要列出所有可用时区,您可以执行以下操作:

timedatectl list-timezones

6

在目录中找到您的时区/usr/share/zoneinfo/

例如,更改多伦多的时区 /usr/share/zoneinfo/America/Toronto

将您的时区符号链接到/etc/localtime例如多伦多:

sudo ln -sf /usr/share/zoneinfo/America/Toronto /etc/localtime

重新启动以完成

reboot

1
我认为您错过了一步-更新系统时钟,以便更改在重新启动时得以保留:sudo nano /etc/sysconfig/clock然后更改ZONE="UTC"ZONE="America/New_York"或其他。别管了UTC=true,因为亚马逊需要硬件时钟。
Typel

0

注意:这是指在您的AWS启动配置“用户数据”下应使用linux框(在我的实例中为debian)。

如果您打算在下面的实例启动时设置TIMEZONE,请使用您自己的国家/城市(而不是“澳大利亚/悉尼”)来使用实例启动(如超级按钮)。

#!/bin/bash

/bin/rm -f /etc/localtime; /bin/ln -s /usr/share/zoneinfo/Australia/Sydney /etc/localtime

0

创建新的EC2实例并选择“ Amazon Linux 2 AMI(HVM)”作为Amazon Machine Image(AMI)时,您可以在“用户数据”部分插入这些行。根据您所在的地区,用适合您的时区更改第二行。我在中欧时间(CET)。请记住,此引导程序代码以root身份执行,并且在创建实例时仅执行一次。

#!/bin/bash
rm -rf /etc/localtime
ln -s /usr/share/zoneinfo/CET /etc/localtime

如果要查看所有其他可用时区,请使用ssh到一个实例并运行:

ls /usr/share/zoneinfo

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.