如何在 Amazon EC2 中设置时区?

Posted

技术标签:

【中文标题】如何在 Amazon EC2 中设置时区?【英文标题】:How to set the time zone in Amazon EC2? 【发布时间】:2012-08-09 12:29:54 【问题描述】:

我想将运行 Ubuntu Linux 的 Amazon EC2 实例中设置的时区更改为本地时间?

我的问题

如何在 Amazon EC2 中更改时区?

【问题讨论】:

【参考方案1】:

它应该与您的桌面 Ubuntu 进程没有什么不同。见here

    SSH 到您的 EC2 服务器

    执行以下操作(将时区设置为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) 有它。

你也可以参考这个Wikipedia article

巴西

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

【讨论】:

+1,谢谢,我如何为不同的国家/地区设置它,例如我必须设置从挪威到巴西的时区。 我收到了这个回复sudo: dpkg-reconfigure: command not found 你没在/usr/sbin/dpkg-reconfigure看到吗? 不,我也不能做 apt-get。我在这里发布了一个相关问题***.com/questions/11935091/… 对于命令行中的 Ubuntu,以下链接提供了简单的 1 行命令:askubuntu.com/a/524362/182454【参考方案2】:

另一种更改时间的方法(这是在 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)【参考方案3】:

检查您当前的时区

$ date

要更改它,请运行

$ sudo dpkg-reconfigure tzdata

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

【讨论】:

谢谢你。这很简单,没有痛苦,而且比其他人的答案要少得多。我尝试了亚马逊文档中概述的步骤,但没有奏效。这就像一个魅力。 绝对应该是公认的答案。 这对我有用。很简单【参考方案4】:

在 aws documentation 中提供有关更改 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 文件。

a.使用您喜欢的文本编辑器(例如 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

【讨论】:

在我的 ubuntu 14.04 上没有 /etc/sysconfig 文件夹 @Simone :以上建议适用于 Amazon Linux 机器。当您使用的是 ubuntu 14.04 - 您能否检查这是否有帮助 help.ubuntu.com/community/UbuntuTime 谢谢,我已经发现这个***.com/questions/11931566/… 很有用。但是我不明白的是,我的服务器时间应该设置为 Etc/UTC 还是应该设置为我的本地时间或基于我的实例所在的位置? @Simone 通常-这取决于您的用例,当您说获取 current_timestamp 等时,您希望应用程序中的默认时间将在此实例上运行。通常我个人建议您设置 UTC 时间zone 默认情况下,然后应将其转换为您需要的任何时区。 我试过了,但由于某种原因它不起作用。 /etc/sysconfig/clock 甚至不存在。幸运的是我找到了另一种方法,但这显然不适用于所有情况。【参考方案5】:

以上步骤都不适合我,所以想在这里写下这个新答案

# 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

【讨论】:

只有这种方法对我也有效..浪费了我生命中的 2 小时 T.T 如果你使用ln -f ...,那么首先在其引用上调用rm是多余的,反之亦然。【参考方案6】:

针对 UBUNTU 16.04 的更新答案:

做:

sudo timedatectl set-timezone America/New_York

更新您的时区。

列出您可以执行的所有可用时区:

timedatectl list-timezones

【讨论】:

【参考方案7】:

来自 RHEL 7 管理员指南

似乎这可能是REDHAT7上的命令

timedatectl set-timezone "Europe/Stockholm"

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

timedatectl list-timezone

更多信息请使用

man timedatectrl

【讨论】:

【参考方案8】:

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

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

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

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

重启完成

reboot

【讨论】:

我认为您错过了一步 - 更新您的系统时钟,以便在重新启动时保留更改:sudo nano /etc/sysconfig/clock 并将 ZONE="UTC" 更改为 ZONE="America/New_York" 或其他任何内容。不要管UTC=true,因为亚马逊requires是硬件时钟。【参考方案9】:

在下面的链接中描述得很好

https://askubuntu.com/questions/3375/how-to-change-time-zone-settings-from-the-command-line/594186#594186?s=8f7d09598b2246629a70bb1928501f52

e:g- sudo timedatectl set-timezone Asia/Kolkata

【讨论】:

【参考方案10】:

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

如果您打算在下面的实例启动时设置 TIMEZONE(就像一个魅力一样),请使用您自己的国家/城市而不是“澳大利亚/悉尼”。

#!/bin/bash

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

【讨论】:

【参考方案11】:

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

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

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

ls /usr/share/zoneinfo

【讨论】:

以上是关于如何在 Amazon EC2 中设置时区?的主要内容,如果未能解决你的问题,请参考以下文章

如何在流明 5.2 中设置时区?

如何在 Selenium Chromedriver 中设置时区?

如何在 Crashlytics 中设置时区?

如何在 Yaml 日期字符串中设置时区?

如何在 node.js 中设置默认时区?

如何在我的 Jest 配置中设置时区?