A time zone is nothing but a region of the globe that observes a uniform standard time for constitutional, business and cultural purposes. In a short time zone refers to the local time of a country. You can easily change timezone in CentOS Linux using the following methods.
Tutorial details | |
---|---|
Difficulty | Easy (rss) |
Root privileges | Yes |
Requirements | CentOS/RHEL |
Time | 2m |
CentOS timezone config files and directories
- /usr/share/zoneinfo/ – The system timezone directory contains the files as per timezone name. For example, the file /usr/share/zoneinfo/America/New_York represents time zone for New York.
- /etc/localtime – It is a symlink to the file localtime or to the correct timezone file in the system located in /usr/share/zoneinfo/ directory.
Change Timezone on a CentOS 6 and 7
Let us see some examples to change timezone or set a new time zone on a CentOS Linux.
How do I see the current time zone on CentOS Linux?
Type the date command or the ls command:
$ date
$ ls -l /etc/localtime
Sample outputs:
Fig.01: Finding current timezone on a CentOS Linux
timedatectl
timedatectl | grep -i 'time zone'
date
Change the current timezone in CentOS 7
To find list of all available time zones, run:
# timedatectl list-timezones
##*** Grep possible Asian timezones ***##
# timedatectl list-timezones | grep Asia
Sample outputs:
Africa/Abidjan Africa/Accra Africa/Addis_Ababa Africa/Algiers Africa/Asmara Africa/Bamako Africa/Bangui Africa/Banjul .... .. America/Dawson America/Dawson_Creek America/Denver America/Detroit America/Dominica America/Edmonton America/Eirunepe America/El_Salvador America/Fortaleza America/Glace_Bay .... .. Pacific/Saipan Pacific/Tahiti Pacific/Tarawa Pacific/Tongatapu Pacific/Wake Pacific/Wallis
The syntax is as follows to set timezone and need to run as root user:
# timedatectl set-timezone time_zone
In this example, set timezone to America/Chicago
# timedatectl set-timezone America/Chicago
Verify new settings by typing the following two commands:
# date
# ls -l /etc/localtime
Sample outputs:
Change the current timezone in CentOS 6 and older
You need to use the ln command to set timezone on Centos 6. Type the following commands as root:
cp /etc/localtime /root/old.timezone rm /etc/localtime ln -s /usr/share/zoneinfo/America/Chicago /etc/localtime
Verify new settings by typing the following two commands:
date ls -l /etc/localtime
Conclusion
You just learned how to change Timezone on CentOS Linux version 5, 6, and 7. The commands described here should also work with RHEL version 5, 6, and 7. For more info on timezone see this wiki page here. I also suggest that you read the following man pages using the man command:
$ man 1 timedatectl
🐧 12 comments so far... add one ↓
Category | List of Unix and Linux commands |
---|---|
File Management | cat |
Firewall | Alpine Awall • CentOS 8 • OpenSUSE • RHEL 8 • Ubuntu 16.04 • Ubuntu 18.04 • Ubuntu 20.04 |
Network Utilities | dig • host • ip • nmap |
OpenVPN | CentOS 7 • CentOS 8 • Debian 10 • Debian 8/9 • Ubuntu 18.04 • Ubuntu 20.04 |
Package Manager | apk • apt |
Processes Management | bg • chroot • cron • disown • fg • jobs • killall • kill • pidof • pstree • pwdx • time |
Searching | grep • whereis • which |
User Information | groups • id • lastcomm • last • lid/libuser-lid • logname • members • users • whoami • who • w |
WireGuard VPN | Alpine • CentOS 8 • Debian 10 • Firewall • Ubuntu 20.04 |
Good information. If I reboot the server it reverts to the old time. To make the change permanent I had to:
vi /etc/sysconfig/clock
Next:
# change value
ZONE="/America/Chicago"
Then after reboot the time change will still apply.
Thanks Mike. I managed to lose the timezone with a yum update. Hopefully this will make it stick.
Thank for posting this Vivek!
Changing /etc/localtime worked great for me… no need to edit /etc/sysconfig/clock.
(file doesn’t exist on my Centos 7 minimal install.)
Cheers!
thank you very very much
Thanks Vivek that was really helpful.
like always vivek saves the day ;-)
what needs to set in .bash_profile ?? I want to set SaudiTime zone…I had done changes in /etc/sysconfig/clock and also .bash_profile also with Asia/Riyadh . And when i put .bash_profile it shows lrwxrwxrwx. 1 root root 33 May 23 16:22 /etc/localtime -> ../usr/share/zoneinfo/Asia/Riyadh … But it not reflect when i check with ‘date’ command…Please suggest
thanks you save my day :)
Thanks for this. My cron however is still firing at UTC – anything that I am missing? I tried setting CRON_TZ in crontab to Asia/Kolkata. But, that isn’t working either. Any help appreciated. Thanks!
Hi,
Thanks a lot…
Why don’t you specify from which directory to execute the symbolic link? I would think that would make all the difference.
You can use any directory as we are using full path as root user.