Ich kenne Befehle zum Einstellen einer bestimmten Uhrzeit und/oder eines bestimmten Datums, kann aber keine finden, die die Zeit relativ zur aktuellen Uhrzeit verschieben.
Welche Befehle gibt es, um die Zeit um x Sekunden/Minuten/Stunden vorwärts/rückwärts zu bewegen? (Und möglicherweise auch um Tage/Monate/Jahre?)
Antwort1
Der Befehl zum Einstellen der Systemzeit lautetdate
. Sie müssen Root sein, um die Systemzeit einzustellen. date
stellt die Zeit auf die angegebene Zeit ein, nicht auf einen relativen Betrag der aktuellen Zeit, da letzteres ziemlich sinnlos wäre. Sie können einen Befehl erstellen, der die aktuelle Zeit um einen relativen Betrag ändert, indem Sie eine Berechnung der Ausgabe von durchführen date
und diese an zurückgeben date
, z. B. (unter nicht eingebettetem Linux)
date $(date +%m%d%H%M%Y.%S -d '1 hour ago')
Beachten Sie, dass ein solches Ändern der Uhr ein Zeiterfassungssystem wie NTP durcheinander bringen kann. Stoppen Sie es zuerst.
Durch Ausführen date
wird die Systemzeit eingestellt, nicht die Hardware-Uhr. Unter Linux führen Siehwclock --systohc
um die Systemzeit auf die Hardware-Uhr zu kopieren; dies geschieht automatisch bei einem sauberen Herunterfahren.
Wenn Sie die Zeit in einer anderen Zeitzone sehen möchten, vergessen Sie all dies und stellen Sie stattdessen die gewünschte Zeitzone ein. Führen Sie unter Linux Folgendes aus:tzselect
um die Systemzeitzone einzustellen. Um ein Programm in einer anderen Zeitzone auszuführen, setzen Sie die TZ
Umgebungsvariable, z. B.
export TZ=Asia/Tokyo
emacs
Wenn Sie ein Programm ausführen und ihm vorgaukeln möchten, dass die Zeit anders ist als sie tatsächlich ist, führen Sie es unter dem Programmfaketime
.
faketime '1 hour ago' date
Antwort2
Sie können auch das folgende Format verwenden, um den Zeitabstand zur aktuellen Zeit zu ermitteln:
$ date --date='1 month'
Sun Sep 17 15:01:11 CST 2017
$ date --date='1 month'
Sun Sep 17 15:01:15 CST 2017
$ date --date='1 month 2 hours'
Sun Sep 17 17:01:23 CST 2017
$ date --date='1 month 2 hours 3 minutes'
Sun Sep 17 17:04:30 CST 2017
ago
Sie können auch Folgendes für einen Zeitpunkt vor dem aktuellen Datum verwenden :
$ date
Fri Aug 18 16:14:41 CST 2017
$ date --date='1 month 2 days ago'
Sat Sep 16 16:14:43 CST 2017
Sie können die --set
Option fürEinstellung+
Uhrzeit , indem Sie vor der Anzahl der Stunden, Minuten usw., die Sie zum eigentlichen Datum hinzufügen möchten, ein Zeichen hinzufügen :
$ date
Thu Aug 17 15:07:00 CST 2017
$ date --set='+1 day +1 hour'
Fri Aug 18 16:07:24 CST 2017
$ date
Fri Aug 18 16:07:31 CST 2017
$ date --set='+1 month 3 days +1 hour'
Thu Sep 21 17:07:42 CST 2017
Ich hoffe, das ist hilfreich.
Antwort3
date -Ins -s $(date -Ins -d '-1 hour')
Antwort4
Wenn ich mich recht erinnere, gab es in UNIX SVR4 eine Option „-a“ für den Befehl „date“, mit der der Superuser die Uhr um einige Sekunden vorstellen oder zurückstellen konnte.