скрипт оболочки для установки времени и даты в Ubuntu

скрипт оболочки для установки времени и даты в Ubuntu

Батарея CMOS моего настольного компьютера не работает, поэтому мне приходится устанавливать время и дату каждый раз при запуске компьютера. Я хочу создать скрипт оболочки для автоматизации установки даты и времени на моем компьютере после завершения каждой загрузки. Возможные варианты: 1. покупка батареи CMOS :- я рассматриваю это, но пока что скрипт оболочки подойдет. 2. использование NTP для синхронизации времени и даты с интернет-серверами :- я не подключен к интернету.

решение1

Если система не может узнать время, единственное, что вы можете сделать, это попытаться сохранить дату и время при выключении и перезагрузить при перезагрузке (как вы и предлагали).

Предупреждение: Следующая инструкция должна работать с системой инициализации типа SystemV: Я ее не тестировал (сейчас я на машине с Windows), поэтому вам придется протестировать ее и отнестись к ней с долей скепсиса --- могут быть опечатки.

Предупреждение2я думаю чтовыскочка(современная реализация сценариев инициализации в Ubuntu) уважает это, но ваш опыт может отличаться: необходимы тесты и эксперименты. Вы можете начать сздесьесли вы хотите сделать это более изящным способом.

Чтобы сохранить дату при выключении/перезагрузке, вы можете добавить скрипт в каталог /etc/rc0.dи /etc/rc6.d(первый используется для выключения, а второй — для перезагрузки). Обычный способ сделать это — создать скрипт в /etc/init.dи затем связать его оттуда.

Все следующие команды должны быть выполнены как root. Используйте предпочитаемый вами метод...

Итак, вы можете создать сценарий /etc/init.d/savedatetimeс помощью вашего любимого редактора и его содержимого:

#!/bin/sh
date +%m%d%H%M%Y.%S > /root/lastseendate.txt

сделайте его исполняемым, а затем скомпонуйте его ( dateформат — тот, который дата может прочитать, см. 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 

Этот K99скрипт должен быть последним, выполняемым перед выключением или перезагрузкой. Если часы поддерживаются при перезагрузке, и вы хотите сделать это только при выключении, просто пропустите последние две команды.

Затем при перезагрузке вы хотите прочитать файл. Есть много мест, куда его можно поместить, самое простое - /etc/rc.local.

Отредактируйте его и поместите в начало:

[ -f  /root/lastseendate.txt ] && date $(cat /root/lastseendate.txt) 
rm -f /root/lastseendate.txt

...и это должно быть все. Удачного взлома!

Связанный контент