a bateria CMOS do meu desktop não está funcionando, portanto, preciso definir a hora e a data sempre que o computador for inicializado. Quero criar um script de shell para automatizar a configuração de data e hora no meu computador após a conclusão de cada inicialização. as opções existentes incluem: 1. comprar uma bateria CMOS: - estou considerando isso, mas por enquanto um script de shell servirá. 2. usando NTP para sincronizar hora e data com servidores de internet: - não estou conectado à internet.
Responder1
Se o sistema não tiver como saber a hora, a única coisa que você pode fazer é tentar salvar a data e hora no desligamento e recarregar na reinicialização (como você sugeriu).
Aviso: A instrução a seguir deve funcionar com um sistema init do tipo SystemV: Eu não testei (estou em uma máquina Windows agora), então você tem que testá-los e aceitá-los com um pouco de sal --- pode haver erros de digitação.
Aviso2eu penso issosubir na vida(a implementação moderna de scripts de inicialização do Ubuntu) respeite-o, mas sua milhagem pode variar: testes e experimentos são necessários.aquise você quiser fazer isso de uma forma mais sofisticada.
Para salvar a data de desligamento/reinicialização, você pode adicionar um script ao diretório /etc/rc0.d
e /etc/rc6.d
(o primeiro usado para desligamento e o último para reinicialização). A maneira normal de fazer isso é criar o script /etc/init.d
e vinculá-lo a partir daí.
Todos os comandos a seguir devem ser emitidos como root. Use seu método preferido...
Assim você pode criar um script /etc/init.d/savedatetime
com seu editor favorito e o conteúdo:
#!/bin/sh
date +%m%d%H%M%Y.%S > /root/lastseendate.txt
torne-o executável e depois vincule-o (o date
formato é aquele que a data pode ser lida, 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
Deve K99
tornar este script o último executado antes do desligamento ou reinicialização. Se o relógio for mantido durante uma reinicialização e você quiser fazer isso apenas no desligamento, simplesmente pule os dois últimos comandos.
Então, na reinicialização, você deseja ler o arquivo. Tem muito lugar onde colocar, sendo o mais fácil /etc/rc.local
.
Edite-o e coloque próximo ao início:
[ -f /root/lastseendate.txt ] && date $(cat /root/lastseendate.txt)
rm -f /root/lastseendate.txt
... e deveria ser isso. Feliz hacking!