meine Desktop-CMOS-Batterie funktioniert nicht, deshalb muss ich bei jedem Hochfahren meines Computers Uhrzeit und Datum einstellen. Ich möchte ein Shell-Skript erstellen, um die Einstellung von Datum und Uhrzeit auf meinem Computer nach jedem abgeschlossenen Bootvorgang zu automatisieren. Folgende Optionen stehen zur Verfügung: 1. Kauf einer CMOS-Batterie: Ich überlege das, aber in der Zwischenzeit reicht ein Shell-Skript. 2. Verwendung von NTP zum Synchronisieren von Uhrzeit und Datum mit Internetservern: Ich bin nicht mit dem Internet verbunden.
Antwort1
Wenn das System die Uhrzeit nicht ermitteln kann, können Sie nur versuchen, Datum und Uhrzeit beim Herunterfahren zu speichern und beim Neustart neu zu laden (wie Sie vorgeschlagen haben).
Warnung: Die folgende Anweisung sollte mit einem Init-System vom Typ SystemV funktionieren: Ich habe sie nicht getestet (ich verwende jetzt eine Windows-Maschine), Sie müssen sie also testen und mit Vorsicht genießen – es könnten Tippfehler enthalten sein.
Warnung2ich denke, dassEmporkömmling(die moderne Ubuntu-Implementierung von Init-Skripten) respektieren Sie es, aber Ihre Laufleistung kann variieren: Tests und Experimente sind erforderlich. Sie können beginnen vonHierwenn Sie es auf eine ausgefallenere Art und Weise machen möchten.
Um das Datum beim Herunterfahren/Neustart zu speichern, können Sie ein Skript zum Verzeichnis /etc/rc0.d
und hinzufügen /etc/rc6.d
(das erste wird zum Herunterfahren und das zweite zum Neustarten verwendet). Normalerweise wird das Skript in erstellt /etc/init.d
und dann von dort aus verknüpft.
Alle folgenden Befehle müssen als Root ausgeführt werden. Verwenden Sie Ihre bevorzugte Methode ...
/etc/init.d/savedatetime
So können Sie mit Ihrem bevorzugten Editor ein Skript mit den folgenden Inhalten erstellen :
#!/bin/sh
date +%m%d%H%M%Y.%S > /root/lastseendate.txt
Machen Sie es ausführbar und verknüpfen Sie es dann (das date
Format ist dasjenige, das das Datum zurücklesen kann, siehe 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
Dieses K99
Skript sollte das letzte sein, das vor dem Herunterfahren oder Neustarten ausgeführt wird. Wenn die Uhr während eines Neustarts beibehalten wird und Sie dies nur beim Herunterfahren tun möchten, überspringen Sie einfach die letzten beiden Befehle.
Beim Neustart möchten Sie die Datei dann lesen. Es gibt viele Orte, an denen Sie sie ablegen können. Am einfachsten ist es /etc/rc.local
.
Bearbeiten Sie es und fügen Sie es an den Anfang ein:
[ -f /root/lastseendate.txt ] && date $(cat /root/lastseendate.txt)
rm -f /root/lastseendate.txt
... und das sollte es sein. Viel Spaß beim Hacken!