Definieren Sie die eigene Zeit in Linux

Definieren Sie die eigene Zeit in Linux

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 warpBefehl 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.

verwandte Informationen