Systemzeit auf 24h Format ändern über SSH Zugriff

X_Clamp

Lieutenant
Registriert
Sep. 2010
Beiträge
931
Hallo,

habe hier eine Sandbox (CentOS als Basis) am Laufen, wo ich leider keine grafische Oberfläche habe.
Ich möchte gerne die Systemzeit dauerhaft vom am/pm Format auf die "deutsche" 24h-Anzeige umschalten, also anstatt z.B. 10:34:43 PM, 22:34:43.

Weiss jemand, wie das über den SSH Zugriff und dementsprechend über die Shell funktioniert?
Durch

Code:
sudo tzselect

konnte ich zumindest schon mal auf die europäische/ deutsche Zeitzone umstellen.

Danke schon mal.
 
Tendenziell indem du die locale (also locale als Kommando, bzw. /etc/locale.conf) auf eine stellst, die im 24h-Format ist.

Edit: Ausführen von locale zeigt dir z.B., was aktuell ausgewählt ist. Meine locale.conf ist ganz allgemein auf de_DE.utf8 gestellt, sollte darüber aber auch selektiv (also LC_TIME setzen, z.B.) gehen.
 
Zuletzt bearbeitet:
Hi,

also locale gibt bei mir folgendes aus:
Code:
[root@sandbox ranger-usersync]# locale
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

Weißt du, wie man das alles auf einen Schlag auf
Code:
de_DE.utf8
stellen kann?

Gibt es dafür einen Befehl?

Edit: Komischerweise gibt es bei mir keine /etc/locale.conf ??
 
So zum Beispiel:
Code:
LANG=de_DE.utf8
Oder:
Code:
LC_ALL=de_DE.utf8

Das kannst du auch so z.B. in deiner .bashrc exportieren, dann gilt das für alle Befehle, die du in der Shell ausführst. Im Zweifel einfach ausprobieren, was passiert, wenn du die /etc/locale.conf anlegst und eine der obigen Zeilen einträgst. Möglicherweise musst du betreffende Services oder das ganze System neustarten, da bin ich mir nicht sicher.
Wenn das nicht geht, stelle mal mit folgendem Kommando sicher, dass die deutsche Locale vorhanden ist (Ausgabe ist dann nicht leer):
Code:
find /usr/share/i18n -name 'de_DE'

LANG und LC_<irgendwas> sind Umgebungsvariablen. Deshalb funktioniert nicht nur das exportieren, sondern man kann auch Kommandos ganz gezielt mit anderen locales ausführen. Sehr praktisch, wenn das System auf deutsch gestellt ist, man aber die englische Ausgabe eines Befehls (z.B. für Google) braucht.
Vgl.:
$ LC_ALL=C date
Tue Mar 17 00:55:22 CET 2015
$ LC_ALL=de_DE.utf8 date
Di 17. Mär 00:55:33 CET 2015
 
Hallo,

Dass alle Werte in /etc/locale.conf auf den gleichen Wert gestellt sind ist komplett schwachsinnig, da sie alle auf den Wert von LANG defaulten. Du musst nur LANG konfigurieren. Der Rest springt dann auf den Wert, wenn er denn nicht definiert ist. Also lösche aus der Datei alles bis auf LANG=en_US.UTF-8. Du musst die Locales, die du nutzen willst, auch generieren. Das tust du, indem du sie in /etc/locale.gen auskommentierst und danach locale-gen ausführst. Das generiert alle Locales, die in /etc/locale.gen definiert sind.
Du kannst dir lokale in der Shell LANG so einstellen, wie du möchtest. einfach "export LANG=de_DE.UTF-8" angeben. Oder was auch immer du möchtest.

Was heißt "bei mir"? Verschiedene Distributionen stopfen Dateien woanders hin. Da locale.conf etwas glibc spezifisches ist, was andere C-Bibliotheken womöglich nicht haben, gibt es diese Datei bei Distributionen mit anderer anderen C-Bibliothek womöglich gar nicht.

Logischerweise reagieren bereits laufende Dienste nicht auf eine Änderung in /etc/locale.conf. Die Locale wird nur beim Programmstart ausgelesen und angepasst, sodass du, wie im letzten Post von schdrom, diese oder den ganzen Rechner neustarten musst, um die Änderungen anzuwenden. Du kannst die Einstellung in /etc/locale.conf auch für einen speziellen Programmaufruf überschreiben, indem du in der Kommandozeile vor dem Befehl die Variablendefinition einträgst.
Zum Beispiel: "LANG=de_DE.UTF-8 gedit"

Grüße,
Thermi
 
Zurück
Oben