Como alterar a data e hora do servidor ubuntu via linha de comando?

40

A data e hora atuais do servidor Ubuntu são diferentes da data e hora do fuso horário. Eu tentei usar:

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

alterá-lo, mas não alterou a data e a hora, apenas imprimi no terminal a data e a hora que alterei, mas quando executei:

sudo hwclock --show

A data e a hora ainda são antigas.

Qual é a maneira correta de alterar a data e a hora do Ubuntu Server?

Priska Aprilia
fonte
você realmente digitou "sudo date newdate" - a palavra "newdate"?
Wolfgang
1
Não. Eu editei minha pergunta. Eu digitei "30 set 2015 4:43:42"
Priska Aprilia

Respostas:

68

Você pode definir a data do sistema com este comando:

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

Então, ao usar date, ele deve ser mostrado corretamente.

Agora você também deve definir o relógio do hardware definido no BIOS do sistema, para que a configuração persista durante uma reinicialização (durante a inicialização, a hora do sistema é definida como o valor do relógio do hardware). Faça isso com hwclock:

sudo hwclock --systohc

Isso obtém o valor dos relógios do sistema (sys) e define o relógio do hardware (hc). Verifique com o hwclockcomando. Ambos hwclocke dateagora devem mostrar a mesma data e hora.


Para definir seu fuso horário , você pode usar este comando:

sudo dpkg-reconfigure tzdata

BTW : Se você usar esta máquina como servidor, eu recomendo o uso de um cliente NTP para sincronizar o tempo na rede . Assim, você pode garantir que todos os seus servidores tenham exatamente o mesmo horário definido. Isso sincronizará o tempo enquanto a máquina estiver funcionando. Se você possui aplicativos que dependem do tempo sincronizado no servidor, recomendo o NTP-Daemon. Quanto mais tempo ele é executado em segundo plano, mais preciso é o tempo.

caos
fonte
1
Eu perdi a etapa de sincronização do relógio. Obrigado pela sua resposta, isso me ajudou!
Priska Aprilia
1
3 opção ajuda, mudou etc / fuso horário =) como php.net/manual/en/timezones.php !!! absolutamente idêntico !!!
Vladimir Ch
@VladimirCh Felizmente, os nomes dos fusos horários são stadarized, portanto, não precisamos fazer nenhum ajuste entre os sistemas. Oh, espera ... há alguma versão Microsoft também ...
peterm
1
Tento mudar, mas não está mudando: - $ sudo date --set = "2015-09-30 10: 05: 59.990" Qua 30 de setembro 10:05:59 +0530 2015 $ date qui 23 de maio 15:10:37 +0530 2019
Vinod
7
  1. Procure seu fuso horário
timedatectl list-timezones
  1. Defina seu fuso horário
sudo timedatectl set-timezone America/Toronto
  1. Habilitar timesyncd
sudo timedatectl set-ntp on

Com isso, o tempo deve ser definido e sincronizado.

Você pode ver mais sobre este tutorial: https://www.digitalocean.com/community/tutorials/how-to-set-up-time-synchronization-on-ubuntu-18-04

NatoBoram
fonte
1
A melhor maneira de corrigi-lo sem definir manualmente horas e minutos! Muito obrigado!
Rafael Moni
4

Não gosto de definir a hora do sistema manualmente. Então, para corrigir esse problema, tive que combinar duas respostas diferentes.
Para fixar a hora do sistema, você deve usar este código:

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

conforme indicado nesta resposta
Em seguida, sincronize o relógio do hardware com o relógio do sistema usando

sudo hwclock --systohc

como dado por @chaos neste tópico.

twitu
fonte
1

apenas digite

sudo date newdatestring

com newdatestring no formato nnddhhmmyyyy.ss

  • nn: o mês (de dois dígitos) (01 a 12)
  • dd: o dia (dois dígitos) (01 a 31), com as regras regulares para os dias de acordo com o mês e ano
  • hh: a hora (dois dígitos) (00 a 23)
  • mm: o minuto (dois dígitos) (00 a 59)
  • aaaa: o ano; pode ser de dois ou quatro dígitos
  • ss é de dois dígitos segundos (00 a 59). Observe o período '.' antes do ss.

Mas, além do comando date, talvez você prefira a "solução" NTP (protocolo de horário da rede): Serverguide - NTP , muito mais fácil de manusear e mais preciso do que definir a data manualmente. Você pode usar um cronjob ou o daemon ntp (ntpd) para atualizar seu tempo a cada x horas / minutos ...

Espero que isto ajude!

Wolfgang
fonte
período inválido quando tentei com "093005082015.15", que significa 30 de setembro de 2015, 05:08:15
Priska Aprilia
sudo date "093005082015.15" trabalhando no meu.
vusan
0

Para quem procura a versão de segundos da época

  1. Defina a data e hora atuais

    sudo date -s @1565864862
  2. Obter a data e hora atuais

    date +%s
    

    saídas 1565864862

Jossef Harush
fonte