- LFCA: Learn to Manage Time and Date in Linux – Part 6
- Check Time and Date On a Linux System
- How to Set a Timezone on a Linux System
- Set Date and Time on a Linux System
- Set Automatic Time Synchronization using NTP Server
- Related Posts
- 1 thought on “LFCA: Learn to Manage Time and Date in Linux – Part 6”
- Настройка даты и времени в Linux – команда date
- Синтаксис и основные опции
- Форматы ввода/вывода даты и времени
- Примеры использование команды date
- Заключение
- Похожие записи:
LFCA: Learn to Manage Time and Date in Linux – Part 6
This article is Part 6 of the LFCA series, here in this part, you will acquaint yourself with the general system administration commands to manage time and date settings in the Linux system.
Time is crucial in any Linux system. Multiple services such as crontab, anacron, backup and restore services depend on accurate time to carry out their tasks as expected.
Linux has 2 types of clocks:
- Hardware clock – This is the battery-powered clock also referred to as the CMOS clock or RTC ( Real Time Clock). The clock runs independently of the operating system & keeps running even when the system is powered off provided the CMOS battery is present.
- System clock ( Software clock ) – This is also referred to as the kernel clock. At boot time, the system clock is initialized from the hardware clock and takes over from there.
Usually, there exists a time difference between the two clocks such that they gradually drift from each other. We will come to this later and show you how you can sync these clocks.
For now, we will see how you can check time and date on a Linux system.
Check Time and Date On a Linux System
There are two main utilities used to check time and date on a Linux system. The first is the date command. Without any arguments, it provides quite a bit of information shown
$ date Friday 26 March 2021 11:15:39 AM IST
To view the date in dd-mm-yy time format only, execute the command:
$ date +"%d-%m-%y" 26-03-21
If you just want to view the current time only and nothing else, use the command:
$ date "+%T" 11:17:11
The timedatectl command is a new utility used in modern Linux systems such as Ubuntu 18.04, RHEL 8 & CentOS 8. It’s a replacement of the date command which was prominent in the old SysVinit systems. It can be used to query and adjust the time on a Linux system.
Without any options, the timedatectl command prints out an array of information such as the local time, UTC time, RTC time, and the timezone to mention a few.
How to Set a Timezone on a Linux System
On a Linux system, time is dependent on the timezone that is set. To check the timezone that is configured on your system, issue the command:
From the output in the snippet above, I am in the Africa/Nairobi timezone. To view the available timezones, run the command:
$ timedatectl list-timezones
Press ENTER to scroll through the whole list of the possible time zones that are available.
Timezones are also defined in the /usr/share/zoneinfo/ path as shown.
There are a couple of ways that you can use to configure the timezone. Using the timedatectl command, you can set the timezone, for instance, to America/Chicago, using the syntax shown.
$ timedatectl set-timezone 'America/Chicago'
The other way you can set the timezone is to create a symbolic link from a timezone file in the /usr/share/zoneinfo path to /etc/localtime. For example, to set the local time zone to EST (Eastern Standard Time), issue the command:
$ sudo ln -sf /usr/share/zoneinfo/EST /etc/localtime
Set Date and Time on a Linux System
To set time only on a Linux system using the format HH:MM:SS (Hour: Minute: Second ), use the syntax below
$ timedatectl set-time 18:30:45
To set the date only in YY-MM-DD (Year: Month: Day) format, use the syntax:
$ timedatectl set-time 20201020
To set both date and time, run:
$ timedatectl set-time '2020-10-20 18:30:45'
NOTE: Manually setting time and date in this manner is not recommended since you are likely to configure inaccurate time and date settings. In fact, by default, automatic time synchronization is turned on to prevent you from making manual time and date settings.
The most recommended way to set time is by either specifying the time zone that you are in as shown earlier or turning on automatic time synchronization with a remote NTP server.
Set Automatic Time Synchronization using NTP Server
NTP is short for Network Time Protocol, which is an internet protocol that is used to automatically synchronize the system’s time clock with a pool on online NTP servers.
Using the timedatectl command, you can set automatic time synchronization as follows:
To disable automatic NTP time synchronization, execute:
Conclusion
The timedatectl and date commands are handy command-line tools that can help you check and adjust your time on Linux.
This is James, a certified Linux administrator and a tech enthusiast who loves keeping in touch with emerging trends in the tech world. When I’m not running commands on the terminal, I’m taking listening to some cool music. taking a casual stroll or watching a nice movie.
Each tutorial at TecMint is created by a team of experienced Linux system administrators so that it meets our high-quality standards.
Related Posts
1 thought on “LFCA: Learn to Manage Time and Date in Linux – Part 6”
“The timedatectl command is a new utility used in MODERN Linux systems such as Ubuntu 18.04, RHEL 8 & CentOS 8. It’s a replacement of the date command which was prominent in the OLD SysVinit systems.” (emphases mine) That statement insinuates that systemd is the new standard and SysVinit, and other non-systemd inits, are totally deprecated, which is very far from the truth. Whether a Linux distro is Modern or OLD is determined by the kernel version it uses, not the version of any of the distro’s components, even if it is the init. There still are many MODERN Linux systems, such as Gentoo, PCLinuxOS, Devuan, Artix, and others that use SysVinit, runit, or other inits rather than systemd. BTW – Ubuntu 18.04 can in no way be considered MODERN as Ubuntu 21.04 has been already released. “There are two main utilities used to check time and date on a Linux system.” You should differentiate right up front which command is used by distros using systemd as init and which command is used by distros using non-systemd inits. Somehow you did not provide the “date” command options for setting time zone, date & time, and how to sync with NTP servers. Reply
Настройка даты и времени в Linux – команда date
Как это часто бывает, всё самое важное скрывается за самыми простыми вещами. Так и в случае с установкой/настройкой даты и времени в системе. Некорректные значения этих параметров запросто ломают логику работы многих приложений, особенно это касается тех систем, где на этом построены целые сервисы, такие как интернет-магазины, SCADA-системы на производстве и т. д. Поэтому так важно следить за корректными настройками времени, даты, языковых форматов, а также уметь все эти параметры настраивать. В системах Linux всё это позволяет выполнять команда date.
Синтаксис и основные опции
Согласно официальной информации, доступной из справочного руководства (команда man date), синтаксис команды date следующий:
date [OPTION] . . . [+FORMAT] date [-u|--utc|--universal] [MMDDhhmm[[CC]YY[.ss]]
Если дать команду date без аргументов или если аргументы начинаются с символа «+», то по-умолчанию будет выведено текущие значения даты и времени. В ином случае производится установка даты и времени, передаваемые в аргументах в каком-либо из форматов. Например, для установки времени введите команду
MM — Месяц
DD — День,
hh — часы в 24-часовом формате,
mm — минуты,
YYYY — 4 цифры года,
ss — секунды.
Прежде чем установить время проверьте правильность установки временной зоны.
Ниже мы боле подробно рассмотрим параметры ввода даты и времени.
Следующая команда выводит информацию о текущих дате и времени в форматированном виде:
Как видно, символ «+» позволяет печатать установленные (текущие) значения, а следующее за ним выражение задаёт формат вывода этих значений. Шаблон подстановки «%n» здесь служит для переноса строки. Все остальные шаблоны подстановки используются для выборки соответствующих компонент времени: месяцы, дни, часы, минуты и т. д. Само же выражение должно заключаться в кавычках, если в нём присутствуют пробельные символы.
Параметры CC, YY и .ss в синтаксисе date означают две последние цифры года, век и секунды (от 0 до 59) соответственно. И эти параметры не являются обязательными. Для того, чтобы устанавливать дату и время с помощью команды date, необходимы права суперпользователя.
В следующей таблице приводится описание основных опций команды date:
Опция | Значение |
-d, —date=STRING | Вычисляет день недели для заданной даты в качестве STRING. Дата задаётся в формате ггммдд. |
-f, —file=DATEFILE | То же самое, что и -d, но для исходных данных используется содержимое из файла FILE. |
-r, —reference=FILE | Определяет время последней модификации файла FILE. |
-s, —set=STRING | Устанавливает время/дату, заданные строкой STRING. |
-u, —utc, —universal | Использование формата |
Форматы ввода/вывода даты и времени
Для формата ввода даты/времени предусматриваются специальные элементы записи того или иного компонента даты/времени. В следующей таблице приводится описание этих элементов записи в виде пар букв, которым соответствуют составляющие даты и времени:
Элемент | Описание |
mm | Минуты — от 0 до 59. |
hh | Часы — от 0 до 23. |
DD | Дни — от 0 до 28, 29, 30 и 31. |
MM | Месяцы — от 01 до 12. |
Как уже можно было видеть, возвращаемые командой данные из её вывода можно форматировать произвольным способом, используя для этого специальные шаблоны подстановки или параметры форматирования. Они служат, как уже было отмечено выше, для выборки требуемых компонентов данных даты/времени из вывода команды date. Список этих параметров довольно длинный, но при этом его легко запомнить, поскольку наименования параметров довольно логичны. Следующая таблица отражает самые основные и часто используемые параметры форматирования:
Параметр | Назначение |
%a | День недели в кратком виде. |
%A | День недели в полном виде. |
%b | Название месяца в кратком виде. |
%B | Название месяца полностью. |
%c | Дата и время, например Чт 07 мар 2019 18:31:22 |
%d | День месяца в цифровом обозначении. |
%D | Дата, например 03/07/19 |
%e | День месяца. Печатает цифровое значение дня месяца с предстоящим отступом. |
%F | Полная дата, например 2019-03-07. |
%g | Последние две цифры года в формате |
%G | Год полностью в формате |
%H | Час суток в 24-часовом формате (00..23) |
%I | Час суток в 12-часовом формате (01..12) |
%j | День года (001..366) |
%k | Час суток в 24-часовом формате с предстоящим отступом. |
%l | Час суток в 12-часовом формате с предстоящим отступом. |
%m | Месяц (01..12). |
%M | Минута (00..59). |
%n | Переводит вывод на новую строку. |
%N | Выводит наносекунды (000000000.999999999). |
%q | Номер квартала года (1..4). |
%R | Время в 24-часовом формате. |
%s | Количество секунд, прошедших с момента 1 января 1970 00: |
%S | Секунды (00..60). |
%u | День недели, если первый день недели — понедельник (1..7). |
%U | Номер недели в году, если первый день недели — воскресенье (00..53). |
%w | День недели, если первый день — воскресенье (0..6). |
%W | Номер недели в году, если первый день недели — понедельник (00..53). |
%y | Последние две цифры года (00..99). |
%Y | Год. |
Примеры использование команды date
Выше уже был пример вывода текущих даты и времени с использованием произвольного форматирования. Поэтому рассмотрение примеров стоит начать с более практичных вариантов применения команды date. Например, очень удобно использование опции -s для установки даты/времени, поскольку она позволяет передавать команде date строку, содержащую требуемое значение в «человекопонятном» виде:
Узнать время последнего изменения какого-либо файла:
Узнать день недели по его дате:
$ date -d 190423 Вт апр 23 00:00:00 +04 2019
Вообще, команду date очень активно используют программисты для написания программного кода приложений, работающих с датой/временем, а также при написании скриптов для автоматизации некоторых процессов. Например, для автоматического наименования фалов, в имени которых содержится подстрока с датой его создания:
$ cp settings.php settings.php_back-$(date +%d%m%y)
В результате будет создана копия файла settings.php под именем settings.php_back-070319. В данном случае используется директива $() для задания имени файла. Нужно заметить, что данный приём — очень мощный инструмент при работе в командной оболочке Linux.
Заключение
В заключение следует отметить отличную гибкость и большие возможности простой консольной утилиты, доступной по команде date, которая на первый взгляд не представляется заслуживающей внимания. Однако, команда date – это яркий пример «маленькой, но очень эффективной программы» в UNIX-подобных системах.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.