
Ich möchte die Echtzeitwahrnehmung für einen Prozess ändern.
Dem Prozess wird vorgegaukelt, dass die Zeit mit 50 % oder 150 % der Geschwindigkeit vergeht, die mein System/Kernel/meine Hardware-Uhr erwartet.
Ich möchte eine generische Lösung finden, die mit jedem Programm verwendet werden kann, ohne dass der Quellcode des Programms gepatcht werden muss.
Gibt es ein Tool, mit dem ich das erreichen kann, was ich brauche?
Antwort1
Dafür faketime
ist der Befehl gedacht. Zum Beispiel:
$ 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
Habe diese Shell gestartet, wobei die Uhr 10 Mal schneller lief als normal (das sleep 10
hat 1 Sekunde geschlafen).
Die Uhr kann verlangsamt werden, indem man einen Bruchmultiplikator (wie 0,5 oder 0,5 (je nach Region) für jedegefälschtvorletzte 2realSekunden. Siehe zum Beispiel:
faketime -f '+0 x0.5' watch date
Dies funktioniert durch das Einfügen von Code in ausführbare Dateien mit und funktioniert LD_PRELOAD
daher nicht bei statisch verknüpften Anwendungen oder setuid
/ setgid
-ausführbaren Dateien oder bei Anwendungen, die Befehle in bereinigten Umgebungen oder in Benutzernamensräumen ausführen oder die Zeitinformationen abrufen oder in den Ruhezustand wechseln, ohne die Systemaufruf-Wrapper von libc zu verwenden.