Ich muss Aspekte meiner Software testen, die nur zu bestimmten Tageszeiten auftreten. Anstatt ganze Tage zu warten (und um 2 Uhr morgens hier zu sein), möchte ich die Zeit ändern.
Aber ich möchte es lieber nicht dauerhaft ändern .
Ich weiß, dass ich die Zeit mit date
und dann wieder zurück ändern kann, aber gibt es einen besseren Weg?
Das fragliche Betriebssystem ist RHEL6, das in einer VM ausgeführt wird.
Antworten:
Es gibt eine Bibliothek mit dem Namen
libfaketime
(auch auf GitHub ), mit der Sie festlegen können, dass das System Ihrer Anwendung eine bestimmte Zeit meldet. Sie können entweder festlegen, dass das System eine feste Zeit für die Dauer der Programmausführung meldet, oder die Uhr zu einer bestimmten Zeit starten (z. B. 01:59:30). Grundsätzlich binden Sie die faketime-Bibliothek über den Bibliothekslader in das speicherinterne Image Ihres Programms ein und erfassen und verarbeiten alle Systemaufrufe, die sich auf die Systemzeit beziehen, auf eigene Weise. Es ist nicht genau ändern die Systemzeit, aber es ändert sich, was Zeit wird berichtet , um Ihre spezifische Anwendung ohne etwas anderes zu beeinflussen , die ausgeführt wird , was wahrscheinlich ist , was Sie wirklich nach sind (sonst, ich sehe keinen Grund, nicht nur die globale ändern Systemzeit).Es gibt eine Reihe von möglichen Varianten, wie man es benutzt, aber es sieht so aus, als würde man die Zeit ändern, die ein Prozess mit libfaketime für wahrscheinlich hält. Google sollte auch in der Lage sein, einige Beispiele zu finden, vorausgesetzt, Sie wissen, wonach Sie suchen müssen.
Es scheint, dass es nicht vorab in den RHEL-Repositories verfügbar ist, aber Debian bietet es
faketime
zum Beispiel unter dem Paketnamen an . Es sieht auch so aus, als würde es direkt aus dem Quellcode erstellt (es braucht anscheinend nicht einmal einenconfigure
Schritt oder so etwas).quelle
Was ich tun würde, ist zuerst einen
ntp
Dienst zu installieren , um die Zeit mit einem Remote-Server zu synchronisieren. Beenden Sie dann den Dienst, ändern Sie das Datum manuell, spielen Sie herum und starten Sie den Dienst neu:quelle