生信服务器 | 更改 CentOS/RHEL 6/7 中的时区

Posted BioIT爱好者

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了生信服务器 | 更改 CentOS/RHEL 6/7 中的时区相关的知识,希望对你有一定的参考价值。

这几天在学习折腾 docker 的时候遇到一个很常见的问题,就是 run container 的时候发现大部分 image 默认使用的时间都是 UTC  (Universal Time Coordinated,UTC)世界协调时间,跟平时中使用的 CST  (China Standard Time UTC+8:00) 中国沿海时间(北京时间) 差别有点大,很不适应。

每次去修改的时候又有点不太记得timedatectl的具体命令,甚至跑一些基于 CentOS/RHEL 6 镜像的流程时发现根本没有 timedatectl 这个命令!

虽然之前在《【原】生信服务器 | Linux 时间戳和标准时间 · 语雀》这个推文专门写了一些timedatectl命令的具体用法,基本都是针对 CentOS/RHEL 7 的系统,不适用于已经停止维护的 CentOS/RHEL 6。

所以,后来专门谷歌了一下,发现除了timedatectl,还有更加简便的一些修改方法,记录一下。


在 CentOS/RHEL 6 中改变时区

在 CentOS 6 中,时区文件位于 /usr/share/zoneinfo 下。所以,如果你的区域是美国/芝加哥(UTC-6) ,它应该是 /usr/share/zoneinfo/America/Chicago 等等。

CentOS 6 使用位于 /etc 下的一个名为 "localtime" 的文件来确定当前设置的时区。

$ ls -la /etc/localtime

这个文件,要么是移动到这个位置的实际时区文件,要么是 zoneinfo 目录下时区的符号链接(即软链接文件)。因此,如果您想要更改时区,首先需要确定使用哪个时区,然后将其符号链接到本地时间。你可以使用以下方法:

$ rm -f /etc/localtime
$ ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
$ date

这将把当前时区设置为 CST 亚洲/上海时区,我所属的时区。


在 CentOS/RHEL 7 中改变时区

CentOS 7 附带了一个叫做timedatectl的命令工具。这可以用来为您查找和设置符号链接,而不是完成 CentOS 6 中要求的工作。

若要列出可用的时区,请运行:

$ timedatectl list-timezones

你可以找到你想要的时区,如下:

$ timedatectl list-timezones | grep Shanghai

现在,要设置一个时区,使用命令set-timezonetimedatectl命令。例如,如果我想将时区设置为 Asia/Shanghai,我会运行以下命令:

$ timedatectl set-timezone Asia/Shanghai      
$ date

上面的这个操作跟上面提到的 CentOS 6 修改时区一样,会创建一个链接到 zoneinfo 目录的 locatime 文件符号链接:

$ ls -l /etc/localtime
lrwxrwxrwx 1 root root 35 Apr  1 15:10 /etc/localtime -> ../usr/share/zoneinfo/Asia/Shanghai




以上是关于生信服务器 | 更改 CentOS/RHEL 6/7 中的时区的主要内容,如果未能解决你的问题,请参考以下文章

CentOS / RHEL 7 更改时区

在不使用 localectl 的情况下更改 CentOS/RHEL 中的系统区域设置?

[SVN]CentOS/RHEL yum 安装的 subversion 是 1.6.11 版本,连VisualSVN服务器时会有"Key usage violation"的错误

Install PHP 7, Apache, MySQL 5.6 on CentOS / RHEL 7.1 & 6.7 + Wordpress

CentOS/RHEL/Ubuntu更改系统时间OR时区

CentOS/RHEL/Ubuntu更改系统时间OR时区