Conozco comandos para configurar una hora y/o fecha específicas, pero no puedo encontrar aquellos que muevan la hora en relación con la hora actual.
¿Cuáles son los comandos para adelantar/retroceder el tiempo x segundos/minutos/horas? (¿Y posiblemente también días/meses/años?)
Respuesta1
El comando para configurar la hora del sistema esdate
. Debes ser root para configurar la hora del sistema. date
establece el tiempo en el tiempo dado, no en una cantidad relativa del tiempo actual, porque ese último comportamiento sería bastante inútil. Puede crear un comando que modifique la hora actual en una cantidad relativa haciendo un cálculo en la salida date
y enviándolo a date
, por ejemplo (en Linux no integrado)
date $(date +%m%d%H%M%Y.%S -d '1 hour ago')
Tenga en cuenta que si está ejecutando un sistema de cronometraje como NTP, cambiar el reloj de esta manera lo confundirá. Detenlo primero.
La ejecución date
establece la hora del sistema, no el reloj del hardware. En Linux, ejecutehwclock --systohc
copiar la hora del sistema al reloj del hardware; esto se hace automáticamente en un apagado limpio.
Si desea ver la hora en una zona horaria diferente, olvídese de todo esto y configure la zona horaria deseada. En Linux, ejecutetzselect
para configurar la zona horaria del sistema. Para ejecutar un programa en una zona horaria diferente, configure la TZ
variable de entorno, por ejemplo
export TZ=Asia/Tokyo
emacs
Si desea ejecutar un programa y hacerle creer que la hora es diferente de la que realmente es, ejecútelo bajo el programa.faketime
.
faketime '1 hour ago' date
Respuesta2
También puede utilizar el siguiente formato para obtener la cantidad de tiempo adelantada a la hora actual:
$ 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
También puedes usar ago
por un tiempo antes de la fecha actual:
$ date
Fri Aug 18 16:14:41 CST 2017
$ date --date='1 month 2 days ago'
Sat Sep 16 16:14:43 CST 2017
Puedes usar la --set
opción paraconfiguraciónhora pero agregando un +
signo antes del número de horas, minutos, etc, que desea agregar a la fecha 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 esto sea útil.
Respuesta3
date -Ins -s $(date -Ins -d '-1 hour')
Respuesta4
Si no recuerdo mal, en UNIX SVR4, había una opción "-a" para el comando "fecha", que permitiría al superusuario ajustar el reloj hacia adelante o hacia atrás una cantidad de segundos.