
Me gustaría cambiar la percepción del tiempo real para un proceso.
Hacer creer al proceso que el tiempo pasa al 50% o 150% de la velocidad que piensa mi sistema/kernel/hardware-clock.
Me gustaría encontrar una solución genérica que pueda usarse con cualquier programa, sin tener que parchear el código fuente del programa.
¿Existe alguna herramienta para lograr lo que necesito?
Respuesta1
Para eso faketime
está diseñado el comando. Por ejemplo:
$ 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
Comenzó ese caparazón con el reloj yendo 10 veces más rápido de lo normal (eso sleep 10
durmió durante 1 segundo).
El reloj se puede ralentizar usando un multiplicador fraccionario (como 0,5 o 0,5 (dependiendo de su ubicación) por cadafalsificadopenúltimo 2realsegundos. Ver por ejemplo:
faketime -f '+0 x0.5' watch date
Eso funciona inyectando código en ejecutables con LD_PRELOAD
, por lo que no funcionará para aplicaciones o ejecutables vinculados estáticamente setuid
, setgid
o aplicaciones que ejecutan comandos en entornos desinfectados o en espacios de nombres de usuario, o que obtienen información de tiempo o duermen sin usar los envoltorios de llamadas del sistema libc.