La batería CMOS de mi computadora de escritorio no funciona, por lo tanto, tengo que configurar la hora y la fecha cada vez que se inicia mi computadora. Quiero crear un script de shell para automatizar la configuración de fecha y hora en mi computadora después de que se completa cada arranque. Las opciones que existen incluyen: 1. Comprar una batería CMOS: estoy considerando esto, pero mientras tanto un script de shell servirá. 2. uso de NTP para sincronizar la hora y la fecha con los servidores de Internet: no estoy conectado a Internet.
Respuesta1
Si el sistema no tiene forma de saber la hora, lo único que puede hacer es intentar guardar la fecha y hora al apagar y recargar al reiniciar (como sugirió).
Advertencia: La siguiente instrucción debería funcionar con un sistema de inicio tipo SystemV: No lo he probado (ahora estoy en una máquina con Windows), así que tienes que probarlas y tomarlas con un poco de sal. Podría haber errores tipográficos.
Advertencia2Creo queadvenedizo(la implementación moderna de Ubuntu de los scripts de inicio) respételo, pero su kilometraje puede variar: se necesitan pruebas y experimentos. Puede comenzar desdeaquísi quieres hacerlo de una manera más elegante.
Para guardar la fecha de apagado/reinicio, puede agregar un script al directorio /etc/rc0.d
y /etc/rc6.d
(el primero se usa para apagar y el último para reiniciar). La forma normal de hacerlo es crear el script /etc/init.d
y luego vincularlo desde allí.
Todos los siguientes comandos deben ejecutarse como root. Utilice su método preferido...
Para que puedas crear un script /etc/init.d/savedatetime
con tu editor favorito y los contenidos:
#!/bin/sh
date +%m%d%H%M%Y.%S > /root/lastseendate.txt
hágalo ejecutable y luego vincúlelo (el date
formato es el que la fecha puede volver a leer, consulte man date
).
chmod +x /etc/init.d/savedatetime
cd /etc/rc0.d/
ln -s ../init.d/savedatetime K99savedatetime
cd /etc/rc6.d/
ln -s ../init.d/savedatetime K99savedatetime
Deberían K99
hacer que este script sea el último ejecutado antes de apagar o reiniciar. Si el reloj se mantiene mediante un reinicio y desea hacerlo solo al apagar, simplemente omita los dos últimos comandos.
Luego, al reiniciar, desea leer el archivo. Hay muchos lugares donde colocarlo, siendo el más fácil /etc/rc.local
.
Edítalo y colócalo cerca del inicio:
[ -f /root/lastseendate.txt ] && date $(cat /root/lastseendate.txt)
rm -f /root/lastseendate.txt
...y eso debería ser todo. ¡Feliz pirateo!