Linux: define a data pela linha de comando

72

Como mudar a data do sistema no Linux?

Eu quero mudar:

  • Somente ano
  • Apenas mês
  • Apenas data
  • Qualquer combinação acima de três
por SHW 22.08.2014 / 11:40

5 respostas

92

Use date -s :

date -s '2014-12-25 12:34:56'

Execute isso como root ou em sudo . Alterar apenas um ano / mês / dia é mais um desafio e envolverá repetição de bits da data atual. Há também ferramentas de data GUI embutidas nos principais ambientes de desktop, geralmente acessadas através do relógio.

Para alterar apenas parte do tempo, você pode usar a substituição de comando na cadeia de data:

date -s "2014-12-25 $(date +%H:%M:%S)"

mudará a data, mas manterá a hora. Consulte man date para detalhes de formatação para criar outras combinações: os componentes individuais são %Y , %m , %d , %H , %M e %S .

    
por 22.08.2014 / 11:44
39

Hora do sistema

Você pode usar date para definir a data do sistema. A implementação GNU de date (como encontrado na maioria dos sistemas baseados em Linux não embarcados) aceita muitos formatos diferentes para definir a hora, aqui alguns exemplos:

definir apenas o ano:

date -s 'next year'
date -s 'last year'

definir apenas o mês:

date -s 'last month'
date -s 'next month'

definir apenas o dia:

date -s 'next day'
date -s 'tomorrow'
date -s 'last day'
date -s 'yesterday'
date -s 'friday'

definir todos juntos:

date -s '2009-02-13 11:31:30' #that's a magical timestamp

Tempo do hardware

Agora a hora do sistema está definida, mas você pode querer sincronizá-la com o relógio do hardware:

Use --show para imprimir a hora do hardware:

hwclock --show

Você pode definir o relógio do hardware para a hora atual do sistema:

hwclock --systohc

Ou a hora do sistema para o relógio do hardware

hwclock --hctosys
    
por 22.08.2014 / 11:59
3

Você altera a data com o comando date . No entanto, o comando espera uma data completa como o argumento:

# date -s "20141022 09:45"
Wed Oct 22 09:45:00 BST 2014

Para alterar parte da data, imprima a data atual com a parte da data que você deseja alterar como uma string e todas as outras como variáveis de formatação de data. Em seguida, passe isso para o comando date -s para defini-lo:

# date -s "$(date +'%Y12%d %H:%M')"
Mon Dec 22 10:55:03 GMT 2014

muda o mês para o 12º mês - dezembro.

Os formatos de data são:

  • %Y - ano
  • %m - mês
  • %d - dia
  • %H - hora
  • %M - minuto
por 22.08.2014 / 11:57
1

Para pessoas como eu executando o ESXI 5.1, aqui está o que o sistema me respondeu

~ # date -s "2016-03-23 09:56:00"
date: invalid date '2016-03-23 09:56:00'

Eu tive que usar um comando ESX específico:

esxcli system time set  -y 2016 -M 03 -d 23  -H 10 -m 05 -s 00

Espero que ajude!

    
por 23.03.2016 / 10:10
-1

Eu usei o comando date e o formato de tempo listados abaixo para definir com sucesso a data do comando terminal shell executado no Android Things, que usa o Linux Kernal.

date 092615002017.00

MMDDHHMMYYYY.SS

MM - Mês - 09

DD - Dia - 26

HH - Hora - 15

MM - Min - 00

AAAA - Ano - 2017

.SS - segundo - 00

    
por 26.09.2017 / 22:03