デスクトップの CMOS バッテリーが機能していないため、コンピューターを起動するたびに日付と時刻を設定する必要があります。起動が完了するたびにコンピューターの日付と時刻の設定を自動化するシェル スクリプトを作成したいと考えています。存在するオプションは次のとおりです。1. CMOS バッテリーを購入する:- これを検討していますが、当面はシェル スクリプトで十分です。2. NTP を使用してインターネット サーバーと日付と時刻を同期する:- インターネットに接続していません。
答え1
システムが時間を知る方法がない場合、唯一できることは、シャットダウン時に日付と時刻を保存し、再起動時に再読み込みすることです (提案どおり)。
警告: 以下の命令は、SystemV タイプの init システムで動作するはずです。私はテストしていません (現在 Windows マシンを使用しています) ので、テストして、多少疑ってかかる必要があります --- タイプミスがある可能性があります。
警告2私は思う成り上がり者(最新のUbuntuのinitスクリプトの実装)はそれを尊重しますが、結果はさまざまです。テストと実験が必要です。ここもっと凝ったやり方でやりたい場合。
シャットダウン/再起動の日付を保存するには、/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
フォーマットは 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
があります。再起動後もクロックが維持され、シャットダウン時にのみクロックが維持されるようにしたい場合は、最後の 2 つのコマンドをスキップするだけです。
次に、再起動時にファイルを読み取ります。ファイルを置く場所はたくさんありますが、最も簡単なのは です/etc/rc.local
。
編集して先頭近くに配置します:
[ -f /root/lastseendate.txt ] && date $(cat /root/lastseendate.txt)
rm -f /root/lastseendate.txt
...これで終わりです。ハッキングを楽しんでください!