Qual é a instrução da linha de comando para alterar o relógio do sistema?

50

Existe algum comando para alterar a data e hora do relógio do sistema?

Por exemplo:

A data e hora atuais é January 1, 1970 22:30:59:980onde 59 e 980 se referem aos segundos e milissegundos, respectivamente

E eu quero mudar para January 2, 1971 23:31:59:990

Existe um comando para isso?

Abel Melquiades Callejo
fonte
Apenas no caso de alguém estar interessado em alterar também o fuso horário. askubuntu.com/questions/3375/…
nassim

Respostas:

57

Para definir a hora no Ubuntu a partir do terminal, você pode usar o seguinte comando:

data do sudo new_date_time_string

onde new_date_time_stringdeve seguir o formato MMDDhhmmyyyy.ssdescrito abaixo:

  • MM é um mês de dois dígitos, entre 01 e 12
  • DD é um dia de dois dígitos, entre 01 e 31, com as regras regulares para os dias de acordo com o mês e o ano
  • hh é de dois dígitos por hora, usando o período de 24 horas, para que fique entre 00 e 23
  • mm é um minuto de dois dígitos, entre 00 e 59
  • yyyyé o ano; pode ser de dois ou quatro dígitos
  • ssé de dois dígitos. Observe o período .antes do ss.

Fonte: Gerenciar o tempo no Ubuntu através da linha de comando .

Portanto, no seu caso particular, você pode usar:

sudo date 010224311971.59

Ou você pode usar:

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

que é exatamente o que você pediu.

Fonte: https://serverfault.com/a/338395/181186 .

Radu Rădeanu
fonte
qual é o formato real da data da string?
Abel Melquiades Callejo
isso significa que a precisão pode ser limitada apenas a segundos ?
Abel Melquiades Callejo
@AbelMelquiadesCallejo Veja minhas novas edições.
Radu Rădeanu
11
Alguém poderia explicar? hhestá entre 00 e 23, mas o OP e esta resposta mostram que está sendo definido como 24.
Carl H
@CarlH Grande captura disso! Veja as novas edições
Abel Melquiades Callejo
16

O caminho fácil:

ntpdate -s ntp.ubuntu.com

Para alterar o fuso horário:

dpkg-reconfigure tzdata

Provavelmente você precisa sudo.

Ninecols
fonte
4
Qual servidor NTP vai definir o tempo para janeiro de 1971, eu me pergunto.
Muru
O seu servidor está conectado à Internet? Verifique a documentação oficial em help.ubuntu.com/lts/serverguide/NTP.html
Ninecols
4

Você pode usar o datecomando para alterar a hora e precisará de sudopermissão para fazê-lo; um exemplo para definir a data para 27 de junho de 2014 e a hora para 1:17 é:

sudo date --set "27 Jun 2014 1:17:00"
aabhas
fonte
3

Desde que o systemd foi introduzido no Ubuntu, a maneira correta é:

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

por exemplo

# timedatectl set-time "2002-10-02T10:00:00-05:00"
# timedatectl set-time "10:35"
# timedatectl set-time "+2 hours"
jojman
fonte
Isso também funciona com sudo date --set="+2 hours", por exemplo , o que é exatamente o que eu precisava.
Emile Vrijdags
0

Versões curtas para definir apenas data ou hora:

Para definir a data (definirá a hora para 0: 0: 0):

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

Para definir apenas a hora:

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

Você pode adicionar o ".990" desejado aos segundos.

Leia a página do manual para obter mais opções e formatos relacionados ao comando date:

man date

Nota: você também pode verificar ou ajustar o relógio do hardware. Leia aqui .

elomage
fonte
-3
sudo date --set="Mon Feb 16 08:49:56 IST 2015"

Essa seria a afirmação correta no UBUNTU 14.04.

Soumya Kanti Naskar
fonte
11
Para todos no fuso horário do IST apenas? A outra resposta não funciona para você?
Xen2050
A pergunta não requer alteração do fuso horário.
Abel Melquiades Callejo