Como fazer uma aplicação detectar se a hora do sistema mudou no Linux

3

Eu preciso escrever um pequeno aplicativo que precisa detectar se a hora do sistema é alterada por outro aplicativo / usuário e executar alguma ação assim que for detectada (talvez registrar os dados que o tempo mudou, junto com informações sobre qual aplicativo / usuário mudou isso).

Como isso pode ser alcançado?

  1. Tenho boas experiências de programação em shell script, c e nível iniciante em python.
  2. Eu não preciso saber quando foi alterado, só preciso saber quem / o que mudou.
  3. O sistema usa NTP para sincronizar a hora, mas também é possível para qualquer pessoa / qualquer aplicativo alterar a hora (por exemplo: usando o comando simples "data" também).
por Vicky 09.06.2011 / 14:05

2 respostas

4

Acho que este artigo tem uma resposta para sua pergunta: Notifique o espaço do usuário sobre alterações de horário . Mas, por favor, note que o patch mencionado no artigo é bem recente, então você tem que checar seu vesrion de linux kenel primeiro.

Se o seu kernel não suportar o mecanismo de notificação do espaço do usuário, você poderá implementar o seguinte algoritmo (em pseudocódigo):

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

Espero que isso ajude.

    
por 09.06.2011 / 14:47
0

Rastreador de chamadas do sistema faz a mesma coisa que você deseja. Você pode usar / modificar esse código.

    
por 10.06.2011 / 18:58