C'è una libreria chiamata libfaketime
(anche su GitHub) che ti consente di fare in modo che il sistema riporti un determinato orario alla tua applicazione. È possibile fare in modo che il sistema riporti un'ora fissa per la durata dell'esecuzione del programma o avviare l'orologio a un'ora specifica (ad esempio, 01:59:30). Fondamentalmente, agganci la libreria faketime all'immagine in memoria del tuo programma tramite il caricatore di librerie e cattura e gestisce a modo suo tutte le chiamate di sistema che si riferiscono all'ora di sistema. Non cambia esattamente l'ora di sistema, ma cambia l'ora riportata alla tua applicazione specifica senza influire su nient'altro che è in esecuzione, che è probabilmente quello che stai veramente cercando (altrimenti, non vedo alcun motivo per non cambiare solo l'ora di sistema globale).
Ci sono un certo numero di possibili varianti su come usarlo, ma sembra che Modificare l'ora in cui un processo pensa che sia con libfaketime ha un elenco piuttosto completo insieme al codice di esempio per provarli. Google dovrebbe anche essere in grado di portare alla luce alcuni esempi dato che sai cosa cercare.
Sembrerebbe che non sia disponibile preconfezionato tramite i repository RHEL, ma per esempio Debian lo fornisce con il nome del pacchetto faketime
. Sembra anche semplice da compilare dal codice sorgente (apparentemente non ha nemmeno bisogno di un configure
step o qualcosa del genere).
Quello che farei è installare prima un ntp
servizio per sincronizzare l'ora con un server remoto. Quindi, interrompi il servizio, modifica manualmente la data, gioca e riavvia il servizio:
service ntpd stop
date -s "Aug 11 2012"
[ do stuff ]
service ntpd start