Jak zmienić datę i godzinę serwera Ubuntu za pomocą wiersza poleceń?

40

Aktualna data i godzina serwera Ubuntu różni się od daty i godziny strefy czasowej. Próbowałem użyć:

sudo date "30 Sep 2015 4:43:42"

aby to zmienić, ale nie zmieniło to daty i godziny, po prostu wydrukowałem na terminalu datę i czas, które zmieniłem, ale kiedy wykonałem:

sudo hwclock --show

Data i godzina są wciąż stare.

Jaki jest prawidłowy sposób zmiany daty i godziny serwera Ubuntu?

Priska Aprilia
źródło
naprawdę wpisałeś „sudo date newdate” - słowo „newdate”?
Wolfgang
1
Nie. Zredagowałem swoje pytanie. Napisałem „30 września 2015 4:43:42”
Priska Aprilia

Odpowiedzi:

68

Możesz ustawić datę systemową za pomocą tego polecenia:

sudo date --set="2015-09-30 10:05:59.990"

Następnie podczas używania datenależy go poprawnie pokazać.

Teraz powinieneś także ustawić zegar sprzętowy w BIOS-ie systemu, aby to ustawienie utrzymywało się po ponownym uruchomieniu (podczas uruchamiania czas systemowy jest ustawiony na wartość zegara sprzętowego). Zrób to z hwclock:

sudo hwclock --systohc

Pobiera to wartość systemowych zegarów (sys) i ustawia zegar sprzętowy (hc). Sprawdź to za pomocą hwclockpolecenia. Zarówno hwclocki datepowinien teraz pokazać tę samą datę i godzinę.


Aby ustawić strefę czasową , możesz użyć tego polecenia:

sudo dpkg-reconfigure tzdata

BTW : Jeśli używasz tego urządzenia jako serwera, zdecydowanie zalecam użycie klienta NTP do synchronizacji czasu przez sieć . Możesz więc zagwarantować, że wszystkie twoje serwery mają dokładnie ustawiony czas. Spowoduje to zsynchronizowanie czasu podczas pracy urządzenia. Jeśli masz aplikacje zależne od czasu synchronizacji na serwerze, polecam demona NTP. Im dłużej działa w tle, tym dokładniejszy jest czas.

chaos
źródło
1
Przegapiłem krok synchronizacji zegara. Dziękuję za odpowiedź, pomogła mi!
Priska Aprilia,
1
3 opcja pomaga, zmieniła się etc / timezone =) jak php.net/manual/en/timezones.php !!! absolutnie identyczne !!!
Vladimir Ch,
@VladimirCh Nazwy stref czasowych na szczęście są ustalane na stadiony, więc nie musimy dokonywać żadnych korekt między systemami. Och, czekaj ... jest też wersja Microsoft ...
PeterM
1
Próbuję zmienić, ale to się nie zmienia: - $ sudo date --set = "2015-09-30 10: 05: 59.990" Wed Sep 30 10:05:59 +0530 2015 $ date Thu May 23 15:10:37 +0530 2019
Vinod
7
  1. Wyszukaj swoją strefę czasową
timedatectl list-timezones
  1. Ustaw swoją strefę czasową
sudo timedatectl set-timezone America/Toronto
  1. Włączyć timesyncd
sudo timedatectl set-ntp on

Dzięki temu czas powinien zostać ustawiony i zsynchronizowany.

Więcej informacji na temat tego samouczka: https://www.digitalocean.com/community/tutorials/how-to-set-up-time-synchronization-on-ubuntu-18-04

NatoBoram
źródło
1
Najlepszy sposób, aby to naprawić bez ręcznego ustawiania godzin i minut! Wielkie dzięki!
Rafael Moni
4

Nie lubię ustawiania czasu systemowego ręcznie. Aby rozwiązać ten problem, musiałem połączyć dwie różne odpowiedzi.
Aby naprawić czas systemowy, musisz użyć tego kodu:

sudo date -s "$(wget -qSO- --max-redirect=0 google.com 2>&1 | grep Date: | cut -d' ' -f5-8)Z"

jak podano w tej odpowiedzi
Następnie synchronizujesz zegar sprzętowy z zegarem systemowym za pomocą

sudo hwclock --systohc

podane przez @chaos w tym wątku.

twitu
źródło
1

po prostu wpisz

sudo date newdatestring

z newdatestring w formacie nnddhhmmyyyy.ss

  • nn: (dwucyfrowy) miesiąc (od 01 do 12)
  • dd: (dwucyfrowy) dzień (od 01 do 31), przy czym obowiązują standardowe zasady dla dni w zależności od miesiąca i roku
  • hh: (dwucyfrowa) godzina (od 00 do 23)
  • mm: minuta (dwucyfrowa) (od 00 do 59)
  • rrrr: rok; może być dwucyfrowa lub czterocyfrowa
  • ss to dwucyfrowe sekundy (od 00 do 59). Zwróć uwagę na kropkę „.” przed ss.

Ale oprócz polecenia daty może wolisz „rozwiązanie” NTP (protokół czasu sieciowego): Serverguide - NTP , znacznie łatwiejszy w obsłudze i bardziej precyzyjny niż ręczne ustawianie daty. Możesz użyć cronjob lub demona NTTP (NTTP), aby aktualizować swój czas co x godzin / minut ...

Mam nadzieję że to pomoże!

Wolfgang
źródło
niepoprawny zakres dat, gdy próbowałem z „093005082015.15”, co oznacza 30 września 2015, 05:08:15
Priska Aprilia
sudo date "093005082015.15" pracuje nad moim.
vusan
0

Dla tych, którzy szukają epokowej wersji sekundowej

  1. Ustaw bieżącą datę i godzinę

    sudo date -s @1565864862
  2. Uzyskaj aktualną datę i godzinę

    date +%s
    

    wyjścia 1565864862

Jossef Harush
źródło