Como mover o tempo do relógio do sistema para frente / para trás?

5

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

Quais são os comandos para mover o tempo para frente / para trás x segundos / minutos / horas? (E possivelmente também dias / meses / anos?)

    
por dziadek1990 13.10.2014 / 20:53

4 respostas

10

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

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

Tenha em atenção que, se estiver a executar um sistema de marcação de horas, como o NTP, alterar o relógio desta forma irá confundi-lo. Pare primeiro.

A execução de date define a hora do sistema, não o relógio do hardware. No Linux, execute hwclock --systohc para copiar 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, execute tzselect para definir o fuso horário do sistema. Para executar um programa em um fuso horário diferente, defina a variável de ambiente TZ , por exemplo,

export TZ=Asia/Tokyo
emacs

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

faketime '1 hour ago' date
    
por 14.10.2014 / 02:42
2
date -Ins -s $(date -Ins -d '-1 hour')
    
por 17.12.2017 / 18:27
0

Você também pode usar o seguinte formato para obter o tempo que falta 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

Você também pode usar ago por um tempo antes da 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 opção --set para a configuração tempo , mas adicionando um sinal + antes do número de horas, minutos, etc, que 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 isso seja útil.

    
por 17.08.2017 / 23:16
0

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

    
por 11.10.2018 / 14:31