it-swarm.com.de

Linux: Datum über Befehlszeile einstellen

Wie ändere ich das Systemdatum unter Linux?

Ich will es verändern:

  • Nur Jahr
  • Nur Monat
  • Nur Datum
  • Beliebige Kombination von über drei
81
SHW

Verwenden date -s :

date -s '2014-12-25 12:34:56'

Führen Sie das als root oder unter Sudo aus. Das Ändern nur eines Jahres/Monats/Tages ist eine größere Herausforderung und beinhaltet das Wiederholen von Teilen des aktuellen Datums. In den wichtigsten Desktop-Umgebungen sind auch GUI-Datumstools integriert, auf die normalerweise über die Uhr zugegriffen wird.

Um nur einen Teil der Zeit zu ändern, können Sie die Befehlsersetzung in der Datumszeichenfolge verwenden:

date -s "2014-12-25 $(date +%H:%M:%S)"

wird das Datum ändern, aber die Zeit behalten. Sehen man date zum Formatieren von Details zum Erstellen anderer Kombinationen: Die einzelnen Komponenten sind %Y, %m, %d, %H, %M, und %S.

99
Michael Homer

Systemzeit

Mit date können Sie das Systemdatum festlegen. Die GNU-Implementierung von date (wie sie auf den meisten nicht eingebetteten Linux-basierten Systemen zu finden ist) akzeptiert viele verschiedene Formate, um die Zeit einzustellen. Hier einige Beispiele:

setze nur das Jahr:

date -s 'next year'
date -s 'last year'

setze nur den Monat:

date -s 'last month'
date -s 'next month'

nur den Tag einstellen:

date -s 'next day'
date -s 'tomorrow'
date -s 'last day'
date -s 'yesterday'
date -s 'friday'

alles zusammen setzen:

date -s '2009-02-13 11:31:30' #that's a magical timestamp

Hardwarezeit

Jetzt ist die Systemzeit eingestellt, aber Sie können sie mit der Hardware-Uhr synchronisieren:

Verwenden --show um die Hardwarezeit zu drucken:

hwclock --show

Sie können die Hardware-Uhr auf die aktuelle Systemzeit einstellen:

hwclock --systohc

Oder die Systemzeit zur Hardware-Uhr

hwclock --hctosys
45
chaos

Sie ändern das Datum mit dem Befehl date. Der Befehl erwartet jedoch ein volles Datum als Argument:

# date -s "20141022 09:45"
Wed Oct 22 09:45:00 BST 2014

Um einen Teil des Datums zu ändern, geben Sie das aktuelle Datum mit dem Datumsteil aus, den Sie als Zeichenfolge ändern möchten, und alle anderen als Datumsformatierungsvariablen. Dann gib das an die date -s Befehl zum Einstellen:

# date -s "$(date +'%Y12%d %H:%M')"
Mon Dec 22 10:55:03 GMT 2014

ändert den Monat auf den 12. Monat - Dezember.

Die Datumsformate sind:

  • %Y - Jahr
  • %m - Monat
  • %d - Tag
  • %H - Stunde
  • %M - Minute
3
garethTheRed

Für diejenigen wie mich, die ESXI 5.1 ausführen, hat mir das System Folgendes beantwortet

~ # date -s "2016-03-23 09:56:00"
date: invalid date '2016-03-23 09:56:00'

Ich musste stattdessen einen bestimmten ESX-Befehl verwenden:

esxcli system time set  -y 2016 -M 03 -d 23  -H 10 -m 05 -s 00
2
Balmipour

Der Befehl zu zum Ändern des Systemdatums Ist date.

Es gibt zwei Möglichkeiten, den Datumsbefehl aufzurufen (unter Linux):

   date [OPTION]... [+FORMAT]
   date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]

Einfach

Am einfachsten ist es, date -s da es die Verwendung von einfach relativen Daten erlaubt

 $ date -s yesterday; date
 date: cannot set date: Operation not permitted
 Sat Jan  5 07:21:07 EST 2019
 Sun Jan  6 07:21:07 EST 2019

Das Datum wurde nicht geändert, da es mit einem eingeschränkten Benutzer ausgeführt wurde $. Wenn Sie das Datum tatsächlich ändern möchten, verwenden Sie root (#) oder Sudo:

 $ Sudo date -s yesterday; date
 Sat Jan  5 07:21:07 EST 2019
 Sat Jan  5 07:21:07 EST 2019

Das Ändern eines Teils eines relativen Datums ist also so einfach wie das Benennen:

 $ date -s "5 years ago"
 Mon Jan  6 08:26:26 EST 2014

 $ date -s "+6 months"
 Sat Jul  6 08:28:39 EDT 2019

 $ date -s "+3 hours -13 minutes"
 Sun Jan  6 11:16:59 AST 2019

Absolute Daten sind etwas komplexer, da sie detaillierter sein müssen:

 $ date -s "2001-07-23 10:11:12"

Oder Sie können den Datumsbefehl zweimal verwenden:

 $ date -s "$(date +'%Y-%m-%d %H:%M:%S')"

ersetzen Sie eines der % durch einen gültigen Wert und das Datum wird gesetzt (nur als root).

 $ date -s "$(date +'%Y-11-%d %H:%M:%S')"
 Wed Nov  6 08:37:15 EST 2019

direkte

Das zweite Datumsaufrufformular wird verwendet, um das Systemdatum direkt zu ändern.

 date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]

Damit :

 date 11230812              # MMDDhhmm

Wird das Datum auf den 23. November um 08h und 12min setzen.

BSD hat einen ähnlichen Befehl aber ein anderes Format ([[[[[cc] yy] mm] dd] HH] MM [.ss]).

Versuchen Sie date als eingeschränkter Benutzer, um zu sehen, was es tun würde (ohne etwas zu ändern):

 $ date 11230812
 date: cannot set date: Operation not permitted
 Sat Nov 23 08:12:00 EST 2019

Oder, wenn Sie das Datum tatsächlich ändern möchten, als root:

 # date 11230812
 # date
 Sat Nov 23 08:12:00 EST 2019

Beachten Sie, dass Dienste wie NTP oder chrony) betroffen sind. Bei einem Neustart wird das Datum auf das tatsächliche zurückgesetzt.

Fügen Sie ein YY hinzu, um das Jahr festzulegen:

 $ date 1123081222
 date: cannot set date: Operation not permitted
 Wed Nov 23 08:12:00 EST 2022

Oder ein CCYY, um das Jahr und Jahrhundert festzulegen:

 $ date 112308121982
 date: cannot set date: Operation not permitted
 Tue Nov 23 08:12:00 EST 1982
1
Isaac