У меня есть скрипт, который синхронизирует время на Linux-серверах (CentOS 6) и записывает смещение в журнал. Хочу сделать через 10 дней текущий лог (ntp.log) скопировать в старый (ntp.log-date), но так не получается. Скрипт продолжает писать в один файл и не вращается. Он запускается cron каждые 5 минут. Я использую Python версии 2.6. Я специально установил интервал в секундах для проверки. Что я делаю не так?
#!/usr/bin/env python
import ntplib
import logging
from logging.handlers import TimedRotatingFileHandler
from time import ctime
import os
import socket
hostname = socket.gethostname()
logHandler = TimedRotatingFileHandler('/root/ntp/log/ntp.log', when='S', interval=300)
logFormatter = logging.Formatter('%(asctime)s %(message)s', datefmt='%d/%m/%Y %H:%M:%S')
logHandler.setFormatter(logFormatter)
logger = logging.getLogger('MyLogger')
logger.addHandler(logHandler)
logger.setLevel(logging.INFO)
c = ntplib.NTPClient()
response = c.request('1.rhel.pool.ntp.org')
logger.info('| %s time offset is | %s' % (hostname, response.offset))
datestr = ctime(response.tx_time)
os.system('date -s "%s"' % datestr)
ntpd
иlogrotate
, а не изобретать велосипед. Логикаntpd
куда более разумна, чем периодические разовые синхронизации. - person ivan_pozdeev   schedule 01.06.2015logrotate
надо посмотреть, аntpd
не могу пользоваться, нужны логи синхронизации - person reddaemon   schedule 01.06.2015ntpd
работает намного умнее, чем просто синхронизация, он использует API дисциплины времени ядра и предназначен для того, чтобы фактически заставить вас забыть о синхронизации раз и навсегда (eecis.udel.edu/~mills/ntp/html/discipline.html#house : если оставленный работать непрерывно, клиент NTP в быстрой локальной сети в домашней или офисной среде может поддерживать синхронизацию номинально в течение одной миллисекунды.) Не волнуйтесь, он регистрирует это всякий раз, когда он делает что-либо с системными часами. - person ivan_pozdeev   schedule 01.06.2015ntpd
у вас не получится синхронизироваться. И если вам нужна регулярная синхронизация, зачем вам регулярно отчитываться об этом? Если вам нужно сообщить о чем-то, внимательно изучите, что точно вы должны сообщить, и определите способ сделать это, не жертвуя фактической работой. - person ivan_pozdeev   schedule 01.06.2015response.tx_time
(Отметка времени передачи) — это время, когда полученный пакет покинул сервер. Время между его уходом иdate
вызовомstime()
не учтено. - person ivan_pozdeev   schedule 01.06.2015