3

Мне нужно написать небольшое приложение, которое должно обнаружить, если системное время изменилось другим приложением / пользователем, и выполнить какое-либо действие, как только оно будет обнаружено (возможно, записать данные об изменении времени вместе с информацией о том, какое приложение / пользователь изменил это).

Как этого достичь?

  1. У меня есть хороший опыт программирования в shell-скриптах, c и на уровне начинающих в python.
  2. Мне не нужно знать, когда это было изменено, просто нужно знать, кто / что изменил это.
  3. Система использует NTP для синхронизации времени, но для любого / любого приложения также возможно изменить время (например, также с помощью простой команды "date").

2 ответа2

4

Я думаю, что эта статья имеет ответ на ваш вопрос: уведомить пространство пользователей об изменениях времени. Но, пожалуйста, обратите внимание, что патч, упомянутый в статье, довольно свежий, поэтому вам нужно сначала проверить ваш linux kenel vesrion.

Если ваше ядро не поддерживает механизм уведомлений в пользовательском пространстве, вы можете реализовать следующий алгоритм (в псевдокоде):

time = gettimeofday()

loop:
    sleep 1 second
    new_time = gettimeofday()
    if (time_diff(new_time, time) > 2 seconds) then
       alert System time has changed by an external user/process!

    time = new_time
    goto loop

Надеюсь это поможет.

0

Трекер системных вызовов делает то же самое, что и вы. Вы можете использовать / изменить этот код.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .