When I was tweaking one of my linux server, I found out that the time of my server isn’t match with my local time. It’s hard to read logs with different time zone from your server, so I decided to change the timezone of my server to the my current timezone. I believe it was set with EST time. It would be easier for me to manage my server if it has the same time and date. I will show you how to change date and time on centos 6 operating system in this article. This article will properly work with other Linux distributions like Ubuntu, Linux Mint, Fedora or Redhat since the way Linux date, time, and timezone work all the same in Linux server.
There are a few different way to change date, time, and timezone on centos 6 via the command line terminal. Linux system normally keep their timezone in /etc/localtime. To check or show the current date, and time of your Linux system, you can use date command. Date command can print, or set date and time of your linux system.
Display Date and Time in Linux
and its output
Sat Mar 15 03:14:29 PDT 2014
Change Timezone in Linux
Fist, we are going to get a list of timezone that came with Linux.
# cd /usr/share/zoneinfo/
Africa Canada GB Indian Mexico ROK iso3166.tab
America Chile GB-Eire Iran NZ Singapore posix
Antarctica Cuba GMT Israel NZ-CHAT Turkey posixrules
Arctic EET GMT+0 Jamaica Navajo UCT right
Asia EST GMT-0 Japan PRC US zone.tab
Atlantic EST5EDT GMT0 Kwajalein PST8PDT UTC
Australia Egypt Greenwich Libya Pacific Universal
Brazil Eire HST MET Poland W-SU
CET Etc Hongkong MST Portugal WET
CST6CDT Europe Iceland MST7MDT ROC Zulu
There are countries, or continent with different timezone, for example when you list all file and directories in zoneinfo directory as I did above, there are timezone for countries with only one timezone, and directories for countries and continent with several timezones. For example my timezone is America Pacific, I will need to go to America directory to get my timezone.
# cd /usr/share/zoneinfo/America/
and the output
Adak Coral_Harbour Hermosillo Moncton Santarem
Anchorage Cordoba Indiana Monterrey Santiago
Anguilla Costa_Rica Indianapolis Montevideo Santo_Domingo
Antigua Creston Inuvik Montreal Sao_Paulo
Araguaina Cuiaba Iqaluit Montserrat Scoresbysund
Argentina Curacao Jamaica Nassau Shiprock
Aruba Danmarkshavn Jujuy New_York Sitka
Asuncion Dawson Juneau Nipigon St_Barthelemy
Atikokan Dawson_Creek Kentucky Nome St_Johns
Atka Denver Knox_IN Noronha St_Kitts
Bahia Detroit Kralendijk North_Dakota St_Lucia
Bahia_Banderas Dominica La_Paz Ojinaga St_Thomas
Barbados Edmonton Lima Panama St_Vincent
Belem Eirunepe Los_Angeles Pangnirtung Swift_Current
Belize El_Salvador Louisville Paramaribo Tegucigalpa
Blanc-Sablon Ensenada Lower_Princes Phoenix Thule
Boa_Vista Fort_Wayne Maceio Port-au-Prince Thunder_Bay
Bogota Fortaleza Managua Port_of_Spain Tijuana
Boise Glace_Bay Manaus Porto_Acre Toronto
Buenos_Aires Godthab Marigot Porto_Velho Tortola
Cambridge_Bay Goose_Bay Martinique Puerto_Rico Vancouver
Campo_Grande Grand_Turk Matamoros Rainy_River Virgin
Cancun Grenada Mazatlan Rankin_Inlet Whitehorse
Caracas Guadeloupe Mendoza Recife Winnipeg
Catamarca Guatemala Menominee Regina Yakutat
Cayenne Guayaquil Merida Resolute Yellowknife
Cayman Guyana Metlakatla Rio_Branco
Chicago Halifax Mexico_City Rosario
Chihuahua Havana Miquelon Santa_Isabel
I will use Toronto for Pacific time, so I will need to copy/set Toronto file as my localtime on my server (this will work with any linux system I believe).
# cp /usr/share/zoneinfo/America/Toronto /etc/localtime
Change Date and Time in Linux
Now your Linux system should have the timezone that you want. If the date or time is not correct, you can set date and time with date command.
# date MMDDhhmmYYYY
- MM: two digit month number
- DD: two digit date
- hh: two digit hour (24 hour system)
- mm: two digit minute
- YYYY: four digit of year
You can also sync your system time and date with ntp (Network Time Protocol) over a network or internet. Normally ntp should be installed to your Linux system as default, in case your system does not have ntp, you can easily install ntp package with a simple command.
To install ntp on Ubuntu, Linux or debian based distribitions
# apt-get update
# apt-get install ntp
To install ntp on Fedora, Centos or redhat based distribitions
# yum install ntp
After you set your timezone correcly, you should be able to synce your date and time with ntp command
# ntpdate pool.ntp.org
ntpdate will only update time & date when you run the command, if you want ntpdate update automatically daily or weekly, run ntpdate with cron
Note: if you have a VPS (virtual private server) and not a real dedicated server, you will properly won’t be able to adjust time on your VPS. When you are on VPS, you do not have the right to modify or update time and date, only the VPS owner or provider have the rights to adjust time and date on that VPS node.
You will properly get one of this error if you are on a VPS.
- Can’t adjust the time of day: Operation not permitted
- rdate: could not set system time: Operation not permitted
- ntpdate: Can’t adjust the time of day: Operation not permitted