
Eu gostaria de mudar a percepção do tempo real para um processo.
Fazendo o processo acreditar que o tempo está passando a 50% ou 150% da velocidade que meu sistema/kernel/relógio de hardware pensa.
Gostaria de encontrar uma solução genérica que possa ser usada com qualquer programa, sem precisar corrigir o código-fonte do programa.
Existe alguma ferramenta para conseguir o que preciso?
Responder1
É para isso que o faketime
comando foi projetado. Por exemplo:
$ time faketime -f '+0 x10' sh -c 'date +%T; sleep 10; date +%T'
13:29:02
13:29:12
faketime -f '+0 x10' sh -c 'date +%T; sleep 10; date +%T' 0.00s user 0.00s system 0% cpu 1.009 total
Iniciei aquele shell com o relógio indo 10 vezes mais rápido que o normal (que sleep 10
dormiu por 1 segundo).
O relógio pode ser desacelerado usando um multiplicador fracionário (como 0,5 ou 0,5 (dependendo da sua localidade) para cadafalsificadopenúltimo 2realsegundos. Veja por exemplo:
faketime -f '+0 x0.5' watch date
Isso funciona injetando código em executáveis com LD_PRELOAD
, portanto, não funcionará para aplicativos vinculados estaticamente ou setuid
/ setgid
executáveis, ou aplicativos que executam comandos em ambientes higienizados ou em namespaces de usuário, ou que obtêm informações de tempo ou suspensão sem usar os wrappers de chamada do sistema libc.