
So stellen Sie die Zeit in Linux auf diese Weise ein:
1 Sekunde ist definiert als 10 Sekunden (10 Sekunden = 1 Sekunde der eigenen Zeit)
Ich möchte, dass alle dort ausgeführten Prozesse 10-mal schneller ablaufen, sodass sleep(1)
sie nur noch 0,1 Sekunden dauern.
Wie erreicht man das?
Antwort1
Sie können einen Befehl (einschließlich einer Shell und aller ihrer untergeordneten Elemente) mit einer beliebig schnelleren Taktfrequenz ausführen, indem Sie den warp
Befehl aus demast-offenPaket. Es verwendet LD_PRELOAD, funktioniert also nicht mit setuid oder setgid oder (mittlerweile relativ selten) statisch verknüpften Programmen. Aus demWarp-Manpage:
warp [Optionen] Datum [Befehl [Argument ...]]
Ketteführt einen dynamisch verknüpften Befehl in einem anderen Zeitrahmen aus, indem zeitbezogene Systemaufrufe abgefangen und die vonBefehlmit der Formel:
Zeit' = Zeit + Warp + (Zeit - Basis) * (Faktor - 1)
WoKetteist das aktuelle Datum,Baseist standardmäßig ein Datum undFaktorist standardmäßig 1.
OPTIONEN
-b, --base=Datum
Setzen Sie das Basis- bzw. Startdatum aufDatum. Nützlich zum Wiederholen einer Reihe von Tests. Der Standardwert ist Datum.
-f, --factor=Faktor
Stellen Sie die verzerrte Uhr so ein, dass sieFaktorSekunden pro realer Sekunde. Der Standardwert ist 1.
Ketteführt ausBefehlmit optionalen Argumenten oderSchWennBefehlwird weggelassen. Alle Prozesse, die ausgeführt werden vonBefehlwerden im gleichen Zeitrahmen verzerrt. Die Zeit schreitet voran fürBefehlund seine Kinder in Höhe vonFaktormal der Systemuhr. Alle Dateien, die vonBefehloder seine Kinder werden neuer erscheinen alsDatumZuBefehlund seine untergeordneten Elemente, liegt aber tatsächlich im normalen Zeitrahmen für nicht verzerrte Befehle.