我的台式机 CMOS 电池无法使用,因此每次启动计算机时我都必须设置时间和日期。我想创建一个 shell 脚本,在每次启动完成后自动设置计算机上的日期和时间。现有的选项包括:1. 购买 CMOS 电池:- 我正在考虑这个,但目前 shell 脚本也可以。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
格式是日期能够读回的格式,请参阅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
...就这样吧。祝您黑客愉快!