Jakie jest polecenie wiersza poleceń służące do zmiany zegara systemowego?

50

Czy istnieje takie polecenie zmiany daty i godziny zegara systemowego?

Na przykład:

Bieżąca data i czas January 1, 1970 22:30:59:980, w którym 59 a 980 odnosi się do sekund i millisecods odpowiednio

I chcę to zmienić na January 2, 1971 23:31:59:990

Czy jest na to polecenie?

Abel Melquiades Callejo
źródło
Na wypadek, gdyby ktoś był zainteresowany zmianą strefy czasowej. askubuntu.com/questions/3375/…
nassim

Odpowiedzi:

57

Aby ustawić czas w Ubuntu z terminala, możesz użyć następującego polecenia:

data sudo new_date_time_string

gdzie new_date_time_stringmusi być zgodny z formatem MMDDhhmmyyyy.ssopisanym poniżej:

  • MM jest dwucyfrowym miesiącem, od 01 do 12
  • DD jest dwucyfrowym dniem, od 01 do 31, przy czym obowiązują standardowe zasady dla dni w zależności od miesiąca i roku
  • hh to dwucyfrowa godzina, z zastosowaniem okresu 24-godzinnego, a więc wynosi od 00 do 23
  • mm jest dwucyfrową minutą, od 00 do 59
  • yyyyjest rok; może być dwucyfrowa lub czterocyfrowa
  • ssjest dwucyfrowe sekundy. Zwróć uwagę na okres .przed ss.

Źródło: Zarządzaj czasem w Ubuntu poprzez wiersz poleceń .

Tak więc w twoim konkretnym przypadku możesz użyć:

sudo date 010224311971.59

Lub możesz użyć:

sudo date --set="1971-01-02 23:31:59.990"  && date --rfc-3339=ns

dokładnie o to prosiłeś.

Źródło: https://serverfault.com/a/338395/181186 .

Radu Rădeanu
źródło
jaki jest faktyczny format daty ciągu?
Abel Melquiades Callejo
czy to oznacza, że ​​dokładność można ograniczyć tylko do sekund ?
Abel Melquiades Callejo
@AbelMelquiadesCallejo Zobacz moje nowe zmiany.
Radu Rădeanu
1
Czy ktoś mógłby wyjaśnić? hhjest między 00 a 23, ale OP i ta odpowiedź wskazują, że jest ustawiony na 24.
Carl H
@CarlH Świetny haczyk na to! Zobacz nowe zmiany
Abel Melquiades Callejo
16

Łatwa droga:

ntpdate -s ntp.ubuntu.com

Aby zmienić strefę czasową:

dpkg-reconfigure tzdata

Prawdopodobnie potrzebujesz sudo.

Ninecols
źródło
4
Zastanawiam się, który serwer NTP ustawi czas na styczeń 1971 r.
mur
Czy Twój serwer jest podłączony do Internetu? Sprawdź oficjalną dokumentację na help.ubuntu.com/lts/serverguide/NTP.html
Ninecols
4

Możesz użyć datepolecenia, aby zmienić czas i będziesz potrzebować sudopozwolenia, aby to zrobić; przykładem ustawienia daty na 27 czerwca 2014 r. i godzinę 01:17 jest:

sudo date --set "27 Jun 2014 1:17:00"
aabhas
źródło
3

Odkąd systemd został wprowadzony w Ubuntu, poprawny sposób to:

# timedatectl set-time "RFC 3339-compliant string"

na przykład

# timedatectl set-time "2002-10-02T10:00:00-05:00"
# timedatectl set-time "10:35"
# timedatectl set-time "+2 hours"
Jojman
źródło
Działa to również np. Z sudo date --set="+2 hours"dokładnie tym, czego potrzebowałem.
Emile Vrijdags
0

Krótkie wersje do ustawiania tylko daty lub godziny:

Aby ustawić datę (ustawi czas na 0: 0: 0):

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

Aby ustawić tylko czas:

date +%T -s "23:31:59"

Możesz dodać żądany „.990” do sekund.

Przeczytaj stronę podręcznika, aby uzyskać więcej opcji i formatów dotyczących polecenia date:

man date

Uwaga: możesz także sprawdzić lub ustawić zegar sprzętowy. Przeczytaj o tym tutaj .

elomage
źródło
-3
sudo date --set="Mon Feb 16 08:49:56 IST 2015"

To byłoby prawidłowe stwierdzenie w UBUNTU 14.04.

Soumya Kanti Naskar
źródło
1
Tylko dla wszystkich w strefie czasowej IST? Czy druga odpowiedź nie działa dla Ciebie?
Xen2050
Pytanie nie wymaga zmiany strefy czasowej.
Abel Melquiades Callejo