Preciso testar aspectos do meu software que só acontecem em determinados momentos do dia. Em vez de esperar dias inteiros (e chegar aqui às 2:00 da manhã), gostaria de mudar o horário.
Mas prefiro não alterá-lo permanentemente .
Sei que posso alterar o tempo usando date
e depois alterá-lo novamente, mas existe uma maneira melhor?
O sistema operacional em questão é o RHEL6 em execução em uma VM.
Respostas:
Existe uma biblioteca chamada
libfaketime
(também no GitHub ) que permite que o sistema relate um determinado tempo ao seu aplicativo. Você pode solicitar que o sistema relate um horário fixo durante a execução do programa ou iniciar o relógio em um horário específico (por exemplo, 01:59:30). Basicamente, você conecta a biblioteca faketime à imagem na memória do programa por meio do carregador de bibliotecas, e ele captura e manipula à sua maneira todas as chamadas do sistema relacionadas à hora do sistema. Ele não altera exatamente o horário do sistema, mas altera o horário relatado para o seu aplicativo específico sem afetar qualquer outra coisa em execução, que provavelmente é o que você realmente procura (caso contrário, não vejo motivo para não apenas mudar o global hora do sistema).Existem várias variantes possíveis de como usá-lo, mas parece que Alterar a hora em que um processo pensa que é com o libfaketime tem uma lista bastante completa, juntamente com o código de amostra para testá-los. O Google também deve conseguir descobrir alguns exemplos, pois você sabe o que procurar.
Parece que ele não está disponível pré -empacotado nos
faketime
repositórios RHEL, mas, por exemplo, o Debian fornece sob o nome do pacote . Também parece simples construir a partir do código-fonte (aparentemente nem precisa de umaconfigure
etapa ou algo do tipo).fonte
O que eu faria é instalar
ntp
primeiro um serviço para sincronizar o tempo com um servidor remoto. Em seguida, pare o serviço, altere manualmente a data, brinque e reinicie o serviço:fonte