Como avançar/retroceder a hora do relógio do sistema?

Como avançar/retroceder a hora do relógio do sistema?

Conheço comandos para definir hora e/ou data específicas, mas não consigo encontrar aqueles que movam a hora em relação à hora atual.

Quais são os comandos para avançar/retroceder o tempo x segundos/minutos/horas? (E possivelmente também dias/meses/anos?)

Responder1

O comando para definir a hora do sistema édate. Você precisa ser root para definir a hora do sistema. datedefine o tempo para o horário determinado, não para um valor relativo do horário atual, porque esse último comportamento seria bastante inútil. Você pode criar um comando que modifique a hora atual em uma quantidade relativa, fazendo um cálculo na saída datee retornando-o date, por exemplo (em Linux não incorporado)

date $(date +%m%d%H%M%Y.%S -d '1 hour ago')

Esteja ciente de que se você estiver executando um sistema de cronometragem como o NTP, alterar o relógio dessa maneira irá confundi-lo. Pare primeiro.

A execução datedefine a hora do sistema, não o relógio do hardware. No Linux, executehwclock --systohccopiar a hora do sistema para o relógio do hardware; isso é feito automaticamente em um desligamento limpo.

Se você quiser ver a hora em um fuso horário diferente, esqueça tudo isso e defina o fuso horário desejado. No Linux, executetzselectpara definir o fuso horário do sistema. Para executar um programa em um fuso horário diferente, defina a TZvariável de ambiente, por exemplo

export TZ=Asia/Tokyo
emacs

Se você quiser executar um programa e fazê-lo acreditar que o tempo é diferente do que realmente é, execute-o no programafaketime.

faketime '1 hour ago' date

Responder2

Você também pode usar o seguinte formato para obter a quantidade de tempo antes da hora atual:

$ date --date='1 month'
Sun Sep 17 15:01:11 CST 2017
$ date --date='1 month'
Sun Sep 17 15:01:15 CST 2017
$ date --date='1 month 2 hours'
Sun Sep 17 17:01:23 CST 2017
$ date --date='1 month 2 hours 3 minutes'
Sun Sep 17 17:04:30 CST 2017

Além disso, você pode usar agoum horário anterior à data atual:

$ date
Fri Aug 18 16:14:41 CST 2017
$ date --date='1 month 2 days ago'
Sat Sep 16 16:14:43 CST 2017

Você pode usar a --setopção paracontextohora, mas adicionando um +sinal antes do número de horas, minutos, etc., que você deseja adicionar à data real:

$ date
Thu Aug 17 15:07:00 CST 2017
$ date --set='+1 day +1 hour'
Fri Aug 18 16:07:24 CST 2017
$ date
Fri Aug 18 16:07:31 CST 2017
$ date --set='+1 month 3 days +1 hour'
Thu Sep 21 17:07:42 CST 2017

Espero que isto seja útil.

Responder3

date -Ins -s $(date -Ins -d '-1 hour')

Responder4

Se bem me lembro, no UNIX SVR4, havia uma opção "-a" para o comando "data", que permitiria ao superusuário ajustar o relógio para frente ou para trás em alguns segundos.

informação relacionada