Я вижу, как анонимный процесс меняет время моей системы на UTC каждые 80 секунд. Используя journalctl -f
command Я вижу только сообщение «systemd [1]: время было изменено», но оно не определяет, какой процесс это делает.
Я знаю, что любой, кто меняет системное время, должен редактировать файл / etc / localtime. Могу ли я найти этот процесс и позволить ему оставить следы, чтобы я мог определить, что это за процесс?
Я думаю, ты хочешь взглянуть на auditd
. Следующий документ от Redhat, но также применим к CentOS 7:
/etc/localtime
определяет часовой пояс по умолчанию системы. Нет необходимости изменять этот файл при настройке системного времени, если вы одновременно не меняете часовой пояс системы по умолчанию.
Сообщение systemd[1]: time has been changed
означает, что что-то регулирует системные часы. Возможно ntpd
, systemd-timesyncd
или любой другой клиент NTP.
Обратите внимание, что date
команда покажет спецификатор часового пояса вместе с датой и временем. Если спецификатор часового пояса изменяется, что-то манипулирует настройками часового пояса: если он не меняется при изменении системного времени, системные часы корректируются, а настройки часового пояса остаются в покое.
Если синхронизация времени NTP вызывает регулярное date
вывод команды для перехода к UTC, значит, ваш часовой пояс установлен неправильно. Вы можете использовать timedatectl set-timezone
, чтобы установить часовой пояс, или просто скопируйте соответствующий файл спецификации часового пояса из /usr/share/zoneinfo/
к /etc/localtime
. Чтобы не запутать инструменты конфигурации, вам также следует изменить значение в /etc/sysconfig/clock
чтобы соответствовать новому часовому поясу системы по умолчанию, но помните, что /etc/localtime
- это основная вещь, которая фактически определяет часовой пояс системы по умолчанию. /etc/sysconfig/clock
просто предоставляет инструментам настройки простой способ узнать текущую настройку.
Системные часы любой системы в стиле Unix должны всегда внутренне работать в формате UTC. Все значения временных меток должны быть преобразованы в UTC на входе и обратно в предпочтительный часовой пояс пользователя на выходе. Синхронизация времени NTP также в основном использует только UTC, поэтому она хорошо согласуется с этой стандартной практикой Unix.
/etc/localtime
и / или TZ
Переменная среды определяет только используемые преобразования. Таким образом, каждый пользователь или даже каждая отдельная программа может использовать другой часовой пояс (путем установки переменной среды TZ всякий раз, когда требуется часовой пояс, отличный от часового пояса по умолчанию), и система все равно может иметь единую концепцию времени.
Эта схема была разработана еще тогда, когда компьютеры были редкостью, большими и дорогими вещами, и пользователи могли использовать текстовые модемные соединения для доступа к одному центральному компьютеру из нескольких часовых поясов.
Поскольку Linux иногда должен сосуществовать в системе с двойной загрузкой с Windows, Linux имеет отдельную концепцию аппаратные часы. Это небольшое, обычно работающее от батареи устройство, которое поддерживает системное время, когда система выключена. Системные часы, с другой стороны, основаны на алгоритмах хронометража ядра (и, возможно, регистрах счетчиков временных меток процессора, если они доступны и не содержат известных аппаратных ошибок).
Аппаратные часы могут быть установлены на местное время или время UTC. Третья строка в /etc/adjtime
определяет, применяется ли преобразование местного времени в UTC при копировании времени аппаратных часов в системные часы при запуске Linux или предполагается, что аппаратные часы используют время UTC напрямую. Последний вариант гораздо более устойчив к изменениям часового пояса и летнего времени, но исторически Windows предполагала, что системные часы используют местное время, и поэтому Linux должна соответствовать этому.