Как установить или изменить часовой пояс в ubuntu 18.04
Содержание:
- Устранение проблем
- How to get the current epoch time in …
- ls command example to find files by date
- Что такое NTP?
- What is epoch time?
- Convert from epoch to human-readable date
- Настройка SELinux для web сервера apache
- 2: Настройка NTP-сервера
- Конфигурация
- Целочисленное представление
- UNIX Date Command Examples and Syntax
- Тестирование
- DESCRIPTION
- Распространённые ошибки при настройке времени в CentOS
Устранение проблем
Двойная загрузка с Windows
Системы с возможностью загрузки другой операционной системы, например Windows, обычно будут испытывать проблемы с переназначением аппаратных часов. Чтобы сделать так, чтобы Windows не меняла аппаратные часы назад в локальное время, добавьте в реестр следующую запись.
В 64-битной версии Windows откройте regedit и перейдите в раздел HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation. Создайте запись RealTimeIsUniversal с типом QWORD и установить её значение в . После этого перезагрузите систему. Теперь системные часы будут в формате UTC.
How to get the current epoch time in …
PHP | More PHP |
Python | Source |
Ruby | (or ). To display the epoch: |
Perl | More Perl |
Java | Returns epoch in seconds. |
C# | (.NET Framework 4.6+/.NET Core), older versions: |
Objective-C | (returns double) or |
C++11 | |
Lua | |
VBScript/ASP | |
AutoIT | |
Delphi | Tested in Delphi 2010. |
R | |
Erlang/OTP | (version 18+), older versions: |
MySQL | More MySQL examples |
PostgreSQL | |
SQLite | |
Oracle PL/SQL | |
SQL Server | |
IBM Informix | |
JavaScript | The getTime method returns the time in milliseconds. |
Visual FoxPro | Warning: time zones not handled correctly |
Go | |
Adobe ColdFusion | |
Tcl/Tk | |
Unix/Linux Shell | |
Solaris | Solaris doesn’t support date +%s, but the default seed value for nawk’s random-number generator is the number of seconds since the epoch. |
PowerShell | |
Other OS’s | Command line: (If Perl is installed on your system) |
ls command example to find files by date
The syntax is as follows:
ls -l ls -lt ls -ltu ls -lt etc | more |
Sample outputs:
drwxr-xr-x 2 root root 4096 Sep 24 11:42 sysctl.d drwxr-xr-x 2 root root 4096 Sep 24 11:42 logrotate.d drwxr-xr-x 2 root root 4096 Sep 24 11:42 init drwxr-xr-x 2 root root 4096 Sep 24 11:42 init.d drwxr-xr-x 2 root root 4096 Sep 24 11:42 dnsmasq.d-available drwxr-xr-x 2 root root 4096 Sep 23 06:22 bash_completion.d -rw-r--r-- 1 root root 22667 Sep 22 18:17 ld.so.cache drwxr-xr-x 9 root root 4096 Sep 22 18:17 apparmor.d drwxr-xr-x 2 root root 4096 Sep 21 06:21 ssh drwxr-xr-x 2 root root 4096 Sep 20 05:35 python3.5 -rw-r--r-- 1 root root 3611 Sep 20 05:35 mailcap drwxr-xr-x 3 root root 4096 Sep 13 12:29 apparmor drwxr-xr-x 7 root root 4096 Aug 22 21:07 network -rw-r--r-- 1 root root 929 Aug 22 21:07 resolv.conf -rw-r--r-- 1 root root 492 Aug 22 21:07 fstab drwxr-xr-x 2 root root 4096 Aug 22 16:31 cron.hourly drwxr-xr-x 2 root root 4096 Aug 22 16:29 percona-toolkit drwxr-xr-x 2 root root 4096 Aug 22 16:29 gdb drwxr-xr-x 2 root root 4096 Aug 18 21:28 cron.daily ... .. ... -rw-r--r-- 1 root root 575 Oct 22 2015 profile -rw-r--r-- 1 root root 10368 Oct 2 2015 sensors3.conf -rw-r--r-- 1 root root 2188 Aug 31 2015 bash.bashrc -rw-r--r-- 1 root root 45 Aug 12 2015 bash_completion -rw-r--r-- 1 root root 477 Jul 19 2015 zsh_command_not_found -rw-r--r-- 1 root root 604 Jul 2 2015 deluser.conf -rw-r--r-- 1 root root 3663 Jun 9 2015 screenrc -rw-r--r-- 1 root root 703 May 6 2015 logrotate.conf -rw-r--r-- 1 root root 12 Apr 30 2015 debian_version -rw-r--r-- 1 root root 771 Mar 6 2015 insserv.conf drwxr-xr-x 2 root root 4096 Mar 6 2015 insserv.conf.d -rw-r--r-- 1 root root 338 Nov 18 2014 updatedb.conf -rw-r--r-- 1 root root 346 Nov 6 2014 discover-modprobe.conf -rw-r--r-- 1 root root 2932 Oct 25 2014 protocols -rw-r--r-- 1 root root 887 Oct 25 2014 rpc -rw-r--r-- 1 root root 19605 Oct 25 2014 services -rw-r--r-- 1 root root 280 Jun 20 2014 fuse.conf -rw-r--r-- 1 root root 497 May 4 2014 nsswitch.conf |
You need to use the grep command/egrep command to filter out info: A better and recommended solution is the find command:
Что такое NTP?
Для корректной работы каждому виртуальному серверу необходимы часы. Пользователь может узнать время сервера при помощи команды date; кроме того, можно изменить часовой пояс сервера с помощью команды export TZ.
Конечно, встроенные часы необходимы для отслеживания событий на самом сервере, но именно они могут стать причиной определенных сбоев и проблем в случае взаимодействия виртуального сервера с другими машинами. На самом деле, это создает серьезные неудобства: письма, отправленные с сервера, часы которого идут неверно, будут приходить адресату в совсем другое время, а пользователи, имеющие доступ только в определенное время суток, могут быть заблокированы из-за временного рассогласования.
Это можно исправить при помощи NTP – сетевого протокола синхронизации времени, клиенты которого могут запрашивать согласованное текущее время, чтобы использовать его для установки своих собственных часов. Для этого нужно установить на сервер демон ntp – программу, которая будет автоматически корректировать время сервера согласно NTP.
Еще один способ синхронизации времени – утилита ntpdate которая автоматически синхронизирует время на сервере согласованным. Тем не менее, ntpdate не следует применять регулярно, потому что она синхронизирует время виртуального сервера очень быстро, а это может стать причиной «прыжка во времени» и вызвать сбои в чувствительном ко времени программном обеспечении. Потому рекомендуется использовать эту утилиту всего один раз – перед установкой NTP, поскольку NTP может вообще не запуститься, если время сервера сильно отличается от согласованного.
Для корректной работы NTP нужно открыть порт 123.
What is epoch time?
The Unix epoch (or Unix time or POSIX time or Unix timestamp) is the number of seconds that have elapsed since January 1, 1970 (midnight UTC/GMT), not counting leap seconds (in ISO 8601: 1970-01-01T00:00:00Z).
Literally speaking the epoch is Unix time 0 (midnight 1/1/1970), but ‘epoch’ is often used as a synonym for Unix time.
Some systems store epoch dates as a signed 32-bit integer, which might cause problems on January 19, 2038 (known as the Year 2038 problem or Y2038).
The converter on this page converts timestamps in seconds (10-digit), milliseconds (13-digit) and microseconds (16-digit) to readable dates.
Human-readable time | Seconds |
---|---|
1 hour | 3600 seconds |
1 day | 86400 seconds |
1 week | 604800 seconds |
1 month (30.44 days) | 2629743 seconds |
1 year (365.24 days) | 31556926 seconds |
Convert from epoch to human-readable date
PHP | Output format example: ‘r’ = RFC 2822 date, |
Python |
Replace time.localtime with time.gmtime for GMT time. Or using datetime: |
Ruby | |
C# | |
Perl | Use the Perl Epoch routines |
Java | Epoch in seconds, remove ‘*1000’ for milliseconds. |
Lua | |
VBScript/ASP | |
AutoIT | |
Delphi | Where Epoch is a signed integer. |
C | Use the C Epoch Converter routines |
Objective-C | |
R | |
Go | |
Adobe ColdFusion | |
MySQL | Default output format is YYY-MM-DD HH:MM:SS. If you need support for negative timestamps: (replace -315619200 with epoch) More MySQL |
PostgreSQL | |
SQLite | or local timezone: |
Oracle PL/SQL | Replace 1526357743 with epoch. |
SQL Server | |
IBM Informix | |
Microsoft Excel / LibreOffice Calc | Format the result cell for date/time, the result will be in GMT time (A1 is the cell with the epoch number). For other time zones: =((A1 +/- time zone adjustment) / 86400) + 25569. |
Crystal Reports | -14400 used for Eastern Standard Time. See Time Zones. |
JavaScript | Use the |
Tcl/Tk | |
MATLAB | |
IBM PureData System for Analytics | |
Unix/Linux Shell | Replace 1520000000 with your epoch, needs recent version of ‘date’. Replace ‘-d’ with ‘-ud’ for GMT/UTC time. |
Mac OS X | |
PowerShell | , then use: . Works for Windows PowerShell v1 and v2 |
Other OS’s | Command line: (If Perl is installed) Replace ‘localtime’ with ‘gmtime’ for GMT/UTC time. |
Thanks to everyone who sent me corrections and updates!
More date related programming examples: What’s the current week number? — What’s the current day number?
Настройка SELinux для web сервера apache
Раздел для тех, кто хочет настроить SELinux на своем web сервере. Сначала ставим пакет policycoreutils-python-utils если он еще не установлен. Он нам нужен для утилиты semanage.
# dnf install policycoreutils-python-utils
Теперь автоматически сформируем модуль для selinux на основе событий аудита, которые накопились, пока мы настраивали сайт. Посмотреть их можно командой.
# grep httpd /var/log/audit/audit.log | audit2why
Создаем модуль selinux.
# grep httpd /var/log/audit/audit.log | audit2allow -M my-httpd
Загружаем его.
# semodule -i my-httpd.pp
То же самое делаем для php.
# grep php /var/log/audit/audit.log | audit2allow -M my-php # semodule -i my-php.pp
Добавим нашу директорию /web/sites в соответствующие таблицы selinux для контента и логов.
# semanage fcontext -a -t httpd_sys_content_t "/web/sites(/.*)?" # semanage fcontext -a -t httpd_log_t "/web/sites(/.*)?/log(/.*)?"
И отдельно добавим каталог, куда web сервер сможет писать данные. Я покажу на примере правила для сайтов wordpress, где web сервер должен уметь писать в директорию wp-content для загрузки медиафайлов, установки тем и плагинов, а так же изменять файл wp-config.php.
# semanage fcontext -a -t httpd_sys_rw_content_t "/web/sites/\*/www/wp-content(/.\*)?" # semanage fcontext -a -t httpd_sys_rw_content_t "/web/sites/\*/www/wp-config.php"
Обновляем атрибуты файлов новым контекстом SELinux.
# restorecon -Rv /web/sites
В завершении настройки selinux для apache, добавим еще один параметр, без которого httpd не сможет писать файлы в указанные каталоги.
# setsebool -P httpd_unified 1
Теперь активируем защиту selinux и проверяем, что она работает.
# setenforce 1 # getenforce Enforcing
Режим работы Enforcing означает, что selinux работает. Убедиться, что модули загружены, можно командой.
# semodule -l | grep my-
В целом, по selinux все. Мы просто разрешили все, что веб сервер просил. По идее, надо вдумчиво во всех правилах разбираться и разрешать только то, что считаешь нужным. Я честно скажу, что selinux знаю не очень хорошо. Дальше загрузки готовых модулей и автоматического создания модулей с помощью audit2allow я не двигался. Руками модули никогда не писал. Если есть какой-то более осмысленный и правильный способ настройки selinux на кастомной конфигурации веб сервера, буду рад полезной информации.
Хорошая практическая статья по ручной настройке selinux для web сервера — https://habr.com/ru/post/322904/. Там же есть ссылки на другие статьи автора на тему selinux. Написано содержательно и наглядно, рекомендую для тех, кто будет знакомиться с технологией.
2: Настройка NTP-сервера
После установки программы откройте конфигурационный файл:
Найдите в нем раздел, содержащий серверы точного времени pool ntp. Этот раздел выглядит так:
Каждая строка ссылается случайно выбранный сервер, с которым виртуальный сервер может синхронизировать время. Чтобы просмотреть работающие серверы синхронизации времени, используйте команду:
Через некоторое время после установки ntp эта команда покажет что-то вроде:
Серверы pool ntp расположены по всему миру, потому иногда синхронизация и поддержка времени виртуального сервера может быть неидеальной. Чтобы улучшить качество синхронизации, нужно задать ntp континентальную зону (например, europe, north-america, oceania или asia), ограничив таким образом количество подходящих серверов pool ntp. Наиболее оптимальным решением является использование зоны, которая соответствует стране, например:
Внеся в конфигурационный файл всю необходимую информацию, перезапустите ntp:
Готово! Теперь NTP будет проверять время сервера и корректировать его в случае необходимости.
Cloud ServerLinuxNTPUbuntuUbuntu 12.04
Конфигурация
Часовой пояс
Для поддержания правильного исчисления времени необходимо выбрать соответствующий часовой пояс, чтобы системе было известно её текущее местоположение.
OpenRC
Смотрите .
systemd
В systemd существует команда timedatectl для настройки часового пояса:
Проверка текущего часового пояса:
Вывод доступных часовых поясов:
Чтобы изменить часовой пояс, пример для Германии:
Системные часы
Обычно время системных часов устанавливается аппаратными часами во время загрузки системы. Также системные часы возможно установить вручную либо с помощью сервера сетевого времени.
Для изменения системного времени можно воспользоваться командой date:
Вывод текущего времени программных часов:
Установка нового системного времени, например на 6 мая 2016 года в 12:34:
systemd
systemd существует команда timedatectl для управления системным временем:
Вывод текущего времени программных часов:
Установка системного времени:
Аппаратные часы
Чтобы получить доступ к аппаратным часам, нужно собрать ядро со следующими включенными параметрами:
Ядро Необходимые параметры ядра для аппаратных часов
Device Drivers ---> Real Time Clock ---> Set system time from RTC on startup and resume Set the RTC time based on NTP synchronization /sys/class/rtc/rtcN (sysfs) /proc/driver/rtc (procfs for rtc0) /dev/rtcN (character devices) <*> PC-style 'CMOS'
Следующая команда выводит текущее на данный момент время аппаратных часов:
Следующая команда устанавливает время аппаратных часов в соответствии с системным временем:
Синхронизация аппаратных часов и системного времени
Обычно аппаратные часы используются при загрузке для установки системного времени. Это может быть осуществлено ядром самостоятельно, либо с помощью загрузочного сервиса init-скрипта при загрузке. Завершение работы ядра или сервиса также может вызвать сохранение времени системных часов в аппаратные часы. Благодаря этому у системы будет правильное время при следующей загрузке.
Синхронизация с помощью ядра
В свежих версиях (3.9 и выше) ядро Linux можно сконфигурировать таким образом, чтобы оно устанавливало системное время автоматически. Чтобы добиться этого, необходимо включить в ядре параметры Set system time from RTC on startup and resume (CONFIG_RTC_HCTOSYS) и Set the RTC time based on NTP synchronization (CONFIG_RTC_SYSTOHC):
Ядро Синхронизация системного времени с помощью ядра
Device Drivers ---> Real Time Clock ---> Set system time from RTC on startup and resume (rtc0) RTC used to set the system time Set the RTC time based on NTP synchronization (rtc0) RTC used to synchronize NTP adjustment /sys/class/rtc/rtcN (sysfs) /proc/driver/rtc (procfs for rtc0) /dev/rtcN (character devices) <*> PC-style 'CMOS'
Параметр ядра Set the RTC time based on NTP synchronization на данный момент поддерживается chrony, NTP и OpenNTPD начиная с версии 5.9p1.
Выведенное число 64 бит должно быть не задано (0). Более подробная информация в man-странице hwclock (ищите ’11 minute mode’).
OpenRC
При использовании OpenRC для установки системного времени во время загрузки и синхронизации аппаратных часов во время завершения работы можно воспользоваться init-скриптом hwclock. Данная сервис включен по умолчанию и должен быть отключен при использовании вышеуказанного способа синхронизации ядром. Скрипт hwclock не следует запускать при использовании часов реального времени ядра.
Однако, если необходимо синхронизировать время с помощью OpenRC, в файле /etc/conf.d/hwclock для <va>clock_hctosys и clock_systohc следует установить значение в . По умолчанию сервис настроена на стандарт UTC. Чтобы изменить это на использование стандарта местного времени (localtime) необходимо добавить .
Файл Синхронизация аппаратных часов
clock_hctosys="YES" clock_systohc="YES" # clock="local"
Перезапустите сервис hwclock и добавьте его init-скрипт в уровень запуска boot:
systemd
Для установки системного времени во время загрузки можно использовать systemd. Для управления аппаратными часами используйте команду timedatectl:
Вывод текущего времени аппаратных часов:
Следующая команда устанавливает аппаратные часы в соответствии с системным временем (в стандарте времени UTC):
Следующая команда устанавливает аппаратные часы в соответствии с системным временем в стандарте времени localtime (местное время):
Целочисленное представление
Unix-время представлено целым числом, которое увеличивается с каждой прошедшей секундой без необходимости вычислений для определения года, месяца, дня, часа или минуты для удобства восприятия человеком. Современное Unix-время согласуется с UTC — отсчет происходит в секундах СИ. Временной промежуток одного дня почти всегда разбит на 86 400 секунд, но при объявлении дополнительных секунд составляет 86 401 секунду. Такие секунды, согласно Всемирному времени, сохраняют длительность дней синхронизированной со временем оборота планеты. В Unix-времени соответствующие номера секунд повторяются, то есть високосные секунды не учитываются.
В момент времени 00:00:00 UTC 1 января 1970 года (четверг) Unix-время равно нулю. Начиная с этого времени, число возрастает на определённое количество в день. Таким образом, к примеру, 16 сентября 2004 года в 00:00:00, спустя 12677 дней после начала отсчета Unix-времени, время будет представлено числом 12 677 × 86 400 = 1 095 292 800, или в случае с 17 декабря 2003 года в 00:00:00, через 12403 дня после начала отсчёта время будет являться числом 12403 × 86 400 = 1 071 619 200. Расчеты могут быть также произведены в обратном направлении, используя отрицательные числа. К примеру, дата 4 октября 1957 года 00:00:00, а это 4472 дня до начала отсчета, представлена в Unix-времени числом −4472 × 86 400 = −386 380 800.
Каждый день число, представляющее Unix-время, вычисляется описанным образом в UTC (00:00:00Z), и увеличивается ровно на 1 в секунду, начиная с полночи. Следовательно, момент времени 16-09-2004 17:55:43,54, соответствующий 64 543,54 секунды от полуночи этой даты, из примера выше, будет представлен в Unix-времени числом 1 095 292 800 + 64 543,54 = 1 095 357 343,54. Для дат, предшествующих началу отсчета, число также возрастает, то есть с течением времени приближается к нулю.
Используемую целочисленную систему удобно использовать для сравнения и хранения дат (дата и время в этом формате занимают всего 4 или 8 байт). При необходимости обращения к элементам дат (день, месяц, год) секунды можно преобразовать в любой подходящий формат (и наоборот).
В программах для хранения Unix-времени используется . 32-битные числа со знаком могут ссылаться на моменты времени от пятницы 13 декабря 1901 года 20:45:52 до вторника 19 января 2038 года 03:14:07 включительно.
Чтобы узнать текущее Unix-время в большинстве Unix-подобных систем, можно использовать команду date +%s.
UNIX Date Command Examples and Syntax
The syntax is:
date date "+format" |
Display Current Date and Time
Type the following command:
date |
Sample outputs:
Tue Oct 27 15:35:08 CDT 2009
When executed without arguments, the date command shows the current date and time.
Set The Current Time
You must run command as root user. To set the current time to 05:30:30, enter:
date 0530.30 |
Warning: Please don’t change the Unix date and time when the server is running with more than one user (multi-user mode) or critical services, as it may result in unexpected behaviors.
Set Date
The syntax is as follows:
Set the date to Oct 25, 12:45 a.m., enter:
date 10250045 |
Again you must run command as root user. In this example, set the current date and time to Oct 15, 2009 04:30 you type:
date --set="20091015 04:30" |
Generating Output
WARNING! These examples may not work on Linux computer running GNU/coreutiles date command. All examples are tested on HP-UX, AIX, Sun Solaris and other proprietary UNIX operating systems only.
Type the following command:
date '+DATE: %m/%d/%y%nTIME:%H:%M:%S' |
Sample outputs:
DATE: 10/27/09 TIME:15:50:44
Try the following examples:
date "+%m/%d/%y" date "+%Y%m%d" date +'%-4.4h %2.1d %H:%M' |
Understanding date format strings
From the date command man page:
- %a – Displays the locale’s abbreviated weekday name.
- %A – Displays the locale’s full weekday name.
- %b – Displays the locale’s abbreviated month name.
- %B – Displays the locale’s full month name.
- %c – Displays the locale’s appropriate date and time representation (default).
- %C – Displays the first 2 digits of the four-digit year as a decimal number (00-99). A year is divided by 100 and truncated to an integer.
- %d – Displays the day of the month as a decimal number (01-31). In a two-digit field, a 0 is used as leading space fill.
- %D – Displays the date in the format equivalent to %m/%d/%y.
- %e – Displays the day of the month as a decimal number (1-31). In a two-digit field, a blank space is used as leading space fill.
- %h – Displays the locale’s abbreviated month name (a synonym for %b).
- %H – Displays the hour (24-hour clock) as a decimal number (00-23).
- %I – Displays the hour (12-hour clock) as a decimal number (01-12).
- %j – Displays the day of year as a decimal number (001-366).
- %k – Displays the 24-hour-clock hour clock as a right-align, space-filled number (0 – 23).
- %m – Displays the month of year as a decimal number (01-12).
- %M – Displays the minutes as a decimal number (00-59).
- %p – Displays the locale’s equivalent of either AM or PM.
- %r – Displays 12-hour clock time (01-12) using the AM-PM notation; in the POSIX locale, it is equivalent to %I:%M:%S %p.
- %S – Displays the seconds as a decimal number (00 – 59).
- %T – Displays the 24-hour clock (00-23) in the format equivalent to HH:MM:SS.
- %w – Displays the weekday as a decimal number in the range 0-6 (Sunday = 0). Refer to the %u field descriptor.
Тестирование
Проверить состояние получения эталонного времени можно командой:
ntpq -p
Мы должны увидеть, примерно, следующее:
remote refid st t when poll reach delay offset jitter
==============================================================================
ru.pool.ntp.org .POOL. 16 p — 64 0 0.000 0.000 0.000
ntp.ubuntu.com .POOL. 16 p — 64 0 0.000 0.000 0.000
*91.189.94.4 17.253.34.253 2 u 58 64 377 55.802 3.790 0.412
-91.189.91.157 132.246.11.231 2 u 56 64 377 113.456 -1.746 0.334
+91.189.89.198 192.53.103.108 2 u 1 64 377 54.595 4.229 0.608
+91.189.89.199 17.253.34.253 2 u 61 64 377 54.061 2.637 0.557
* где:
- remote — адрес сервера времени, с которым синхронизируется наш сервер;
- refid — вышестоящий сервер (с которым сервер из графы выше получает время);
- st — уровень сервера (stratum);
- t — пир (unicast или multicast);
- when — когда последний раз сверялось время;
- poll — периодичность синхронизации с этим сервером;
- reach — состояние работоспособности. Если удалось произвести синхронизации восемь раз в подряд становится равным 377;
- delay — время задержки;
- offset — разница между нашим временем и временем на сервере; положительное — наши часы спешат, отрицательное — отстают;
- jitter — смещение времени на удаленном сервере;
- * — с этим сервером синхронизирует время наш ntpd;
- + — сервер можно использовать для сверки часов;
- — — не рекомендован для синхронизации;
- x — не доступен.
Проверить отдачу времени сервером можно введя команду на другом Linux:
ntpdate 192.168.0.15
Правильный ответ имеет следующий вид:
ntpdate: adjust time server 192.168.0.15 offset 0.017657 sec
* время было рассинхронизировано на 0.017657 секунд.
Отобразить текущее время можно командой:
date
Если после синхронизации время некорректно, настраиваем правильный часовой пояс:
cp /usr/share/zoneinfo/Europe/Moscow /etc/localtime
* московское время (GMT+3).
DESCRIPTION
Display the current time in the given FORMAT, or set the system date.
- -d, —date=STRING
- display time described by STRING, not `now’
- -f, —file=DATEFILE
- like —date once for each line of DATEFILE
- -r, —reference=FILE
- display the last modification time of FILE
- -R, —rfc-2822
- output date and time in RFC 2822 format. Example: Mon, 07 Aug 2006 12:34:56 -0600
- —rfc-3339=TIMESPEC
- output date and time in RFC 3339 format. TIMESPEC=`date’, `seconds’, or `ns’ for date and time to the indicated precision. Date and time components are separated by a single space: 2006-08-07 12:34:56-06:00
- -s, —set=STRING
- set time described by STRING
- -u, —utc, —universal
- print or set Coordinated Universal Time
- —help
- display this help and exit
- —version
- output version information and exit
FORMAT controls the output. Interpreted sequences are:
- %%
- a literal %
- %a
- locale’s abbreviated weekday name (e.g., Sun)
- %A
- locale’s full weekday name (e.g., Sunday)
- %b
- locale’s abbreviated month name (e.g., Jan)
- %B
- locale’s full month name (e.g., January)
- %c
- locale’s date and time (e.g., Thu Mar 3 23:05:25 2005)
- %C
- century; like %Y, except omit last two digits (e.g., 20)
- %d
- day of month (e.g., 01)
- %D
- date; same as %m/%d/%y
- %e
- day of month, space padded; same as %_d
- %F
- full date; same as %Y-%m-%d
- %g
- last two digits of year of ISO week number (see %G)
- %G
- year of ISO week number (see %V); normally useful only with %V
- %h
- same as %b
- %H
- hour (00..23)
- %I
- hour (01..12)
- %j
- day of year (001..366)
- %k
- hour, space padded ( 0..23); same as %_H
- %l
- hour, space padded ( 1..12); same as %_I
- %m
- month (01..12)
- %M
- minute (00..59)
- %n
- a newline
- %N
- nanoseconds (000000000..999999999)
- %p
- locale’s equivalent of either AM or PM; blank if not known
- %P
- like %p, but lower case
- %r
- locale’s 12-hour clock time (e.g., 11:11:04 PM)
- %R
- 24-hour hour and minute; same as %H:%M
- %s
- seconds since 1970-01-01 00:00:00 UTC
- %S
- second (00..60)
- %t
- a tab
- %T
- time; same as %H:%M:%S
- %u
- day of week (1..7); 1 is Monday
- %U
- week number of year, with Sunday as first day of week (00..53)
- %V
- ISO week number, with Monday as first day of week (01..53)
- %w
- day of week (0..6); 0 is Sunday
- %W
- week number of year, with Monday as first day of week (00..53)
- %x
- locale’s date representation (e.g., 12/31/99)
- %X
- locale’s time representation (e.g., 23:13:48)
- %y
- last two digits of year (00..99)
- %Y
- year
- %z
- +hhmm numeric time zone (e.g., -0400)
- %:z
- +hh:mm numeric time zone (e.g., -04:00)
- %::z
- +hh:mm:ss numeric time zone (e.g., -04:00:00)
- %:::z
- numeric time zone with : to necessary precision (e.g., -04, +05:30)
- %Z
- alphabetic time zone abbreviation (e.g., EDT)
By default, date pads numeric fields with zeroes. The following optional flags may follow `%’:
- —
- (hyphen) do not pad the field
- _
- (underscore) pad with spaces
- (zero) pad with zeros
- ^
- use upper case if possible
- #
- use opposite case if possible
After any flags comes an optional field width, as a decimal number; then an optional modifier, which is either E to use the locale’s alternate representations if available, or O to use the locale’s alternate numeric symbols if available.
Распространённые ошибки при настройке времени в CentOS
В данном разделе, я опишу частые ошибки, которые возникают при работе с утилитами timedatectl, ntp.
При ручной синхронизации времени, у вас может возникнуть подобная ошибка:
ntpdate : the NTP socket is in use, exiting
Она означает, что у вас запущен демон ntpd, который блокирует ручную синхронизация времени. Чтобы выполнить ручную синхронизацию, остановите демон ntpd:
И запустите синхронизацию заново:
Аналогичная ошибка может возникать и при работе с утилитой timedatectl:
Failed to set time: Automatic time synchronization is enabled.
Теперь нужно отключить автоматическую синхронизацию в самой утилите timedatectl:
И выполнить команду по установке конкретного времени:
При работе с часовыми поясами, они могут быть не установлены у вас на сервере и создать симлинк для localtime не получится. Для того, чтобы в системе были доступны часовые пояса, установите утилиту tzdata:
Так при ручной синхронизации, часто бывают ошибки вида:
28 Nov 10:12:39 ntpdate: sendto(185.217.191.98): Operation not permitted
В этом случае проверьте правила firewalld / iptables, и убедитесь, что у вас на сервере открыт UDP порт 123. Так же некоторые хосты синхронизации могут быть недоступны в момент проверки.