Jak ustawić aktualny czas w systemie Linux?

69

Dlaczego dane wyjściowe następujących poleceń są inne?

root@vmi2115:/var# hwclock
Sun 26 Jun 2011 01:21:38 PM CEST  -0.273230 seconds
root@vmi2495:/var# date
Sun Jun 26 15:21:39 CEST 2011
root@vmi2115:/var# 

Czy mogę zmienić aktualny czas w systemie Linux?

Wuffers
źródło
1
Szybkie wyszukiwanie Google zwraca ten link:> cyberciti.biz/faq/howto-set-date-time-from-linux-command-prompt

Odpowiedzi:

89

Zwykle czas ma być ustawiony automatycznie, aw takim przypadku musisz ustawić ntpdautomatyczne ustawianie czasu dla Ciebie.

Szczegóły różnią się nieznacznie w zależności od dystrybucji, ale jeśli na przykład używasz Ubuntu, istnieje przewodnik na temat konfigurowania NTP na Ubuntu . W przeciwnym razie tylko Google ntpd <distribution-name>, a prawdopodobnie go znajdziesz.

Jeśli jednak chcesz ustawić go ręcznie, możesz użyć date --set="<date string>". Przykładami tego mogą być:

date --set="23 June 1988 10:00:00"
date --set="10:00:00"
Sebastian Paaske Tørholm
źródło
37

Ustaw zegar sprzętowy na bieżący czas systemowy.

# hwclock --systohc

Ustaw czas systemowy na podstawie zegara sprzętowego.

# hwclock --hctosys
Gjorgji Tashkovski
źródło
23

tylko ntpdate ntp.ubuntu.comi wszystko będzie dobrze.

Więcej informacji na ten temat można znaleźć w oficjalnej dokumentacji Ubuntu

Gangsar Swapurba
źródło
18
wyjaśnij szczegółowo swoją odpowiedź i wyjaśnij QA i przyszłym czytelnikom, co robi wspomniane przez ciebie polecenie i dlaczego polecasz takie działanie. Uwaga: QA zapytał, jak zmienić czas, a nie jak go zsynchronizować.
Lorenzo Von Matterhorn
1
@LorenzoVonMatterhorn ok
Gangsar Swapurba
To wciąż nie ma wyjaśnienia. Czego powinienem się spodziewać, jeśli uruchomię to polecenie?
jerclarke
1
Świetnie sprawdził się do ustawiania dokładnego czasu.
Sabrina Gelbart
13

Innym częstym, bardzo irytującym problemem jest wybranie niewłaściwej strefy czasowej ...

Sprawdź strefę czasową z wyjściem daty:

data $

Fre sie 23 18:47:04 UTC 2013

Aby poprawić typ strefy czasowej:

$ sudo tzselect

i wybierz odpowiedni region z odpowiednimi liczbami.

Drugim zadaniem jest ustawienie prawidłowego czasu:

$ sudo date --set = "18:37:00"

Lub po prostu nie spiesz się z HW-Clock:

$ sudo hwclock --hctosys

phylib
źródło
3

W CentOSstrefach czasowych znajdują się w /usr/share/zoneinfo/, aby zmienić datę systemową na określoną strefę czasową , możesz:

Najpierw wykonaj kopię zapasową istniejącego pliku czasu lokalnego.

sudo mv /etc/localtime /etc/localtime.bak

Następnie utwórz link:

sudo ln -s /usr/share/zoneinfo/Europe/Lisbon  /etc/localtime

Sprawdź nową datę systemową, wpisując date.

Aby ręcznie ustawić datę systemu Linux , możesz wpisać:

date -s "11 MAR 2006 11:11:11"

LUB

date --set="11 MAR 2015 11:11:11"

LUB

date +%Y%m%d -s "20150311"

Aby ustawić zegar sprzętowy na bieżący czas systemowy:

hwclock --systohc

LUB

hwclock -w
Pedro Lobito
źródło
1

„hwclock” to data sprzętu (maszyny), a „data” to data oprogramowania (systemu operacyjnego).

Aby zmienić datę sprzętową komputera:

hwclock --set --date="2013-7-31 09:30"

Aby zmienić datę oprogramowania:

date --set "2013-7-31 09:30"
David Motilla
źródło
1

Spróbuj tego:

date +%T -s "12:21:00"

lub

date +%T%p -s "12:22:20AM"
date +%T%p -s "12:23:30PM"
Zeroows
źródło
0

datezwraca czas podany jako czas od momentu uruchomienia procesora plus wewnętrzny zegar sprzętowy podany czas, hwclockdaje czas, który ma zegar wewnętrzny.

Czas oparty na jednostkach centralnych ma tendencję do dryfowania w miarę, jak długo maszyna jest uruchomiona, to jest powód istnienia hwclock --hctosyspolecenia. Jest to również jeden z powodów wykorzystania czasu protokołu sieciowego, który służy do koordynowania czasu na arenie międzynarodowej w Internecie.

RedComet
źródło
0

użyj tego, jeśli nie masz klienta NTP

date -s $(wget -q -O - http://www.timeapi.org/eest/now | cut -d '+' -f 1 | tr -d : | tr -d - | tr -d T | cut -c 1-12)

eest w adresie URL to Twoja lokalna strefa czasowa

Możesz użyć utc ... i etc

Ivaylo Mutafov
źródło
ale ten działa dla mnie: askubuntu.com/a/683136
user956584
0

czy mogę zmienić aktualny czas w systemie Linux?

Dla mnie najpierw musiałem uruchomić to polecenie:

sudo systemctl stop systemd-timesyncd

W przeciwnym razie systemd natychmiast zresetuje czas. Po zatrzymaniu usługi systemowej uruchomienie datedziała zgodnie z oczekiwaniami:

$ sudo date -s 'january 1 1971'
Fri Jan  1 00:00:00 CET 1971
$ date
Fri Jan  1 00:00:00 CET 1971

Gdy usługa była uruchomiona, date -spolecenie wydawało się działać, ale uruchomienie datechwilę później dałoby mi czas systemowy.

Luc
źródło