我有 cron 命令,每天中午 12:10 运行关闭 bash 脚本。
10 0 * * * /bin/bash /var/www/scripts/special-reboot.sh
该脚本非常基本,它所做的就是关闭 nginx 并将数据从 MySQL 中的 MEMORY 表移动到普通表。然后它执行sudo /sbin/shutdown -r now 'Daily restart.'
它已经运行良好大约一两个月了,但是昨晚发生了一些非常奇怪的事情,我需要知道为什么。
我有一个 python 日志脚本,它检查重要进程是否每 15 分钟运行一次。昨晚重新启动后,日志如下所示(注意日期和时间)。
[2019-02-12 23:45]
...
[2019-02-13 00:00]
...
[2016-11-04 03:30]
...
[2016-11-04 03:45]
...
[2016-11-04 04:00]
...
[2016-11-04 04:15]
...
[2016-11-04 04:30]
...
[2016-11-04 04:45]
...
[2016-11-04 05:00]
...
[2016-11-04 05:15]
...
[2016-11-04 05:30]
...
[2019-02-13 02:30]
...
[2019-02-13 02:45]
...
[2019-02-13 03:00]
正如您所看到的,它突然开始从不同的日期时间开始计数大约两个小时,然后恢复正常。
最可怕的是,受影响的不仅仅是 python 脚本。另一个跟踪电脉冲的 C 脚本缺少该时间段的数据。
我不知道是什么原因造成的。我知道,由于我的日志脚本,所有重要的程序在这段时间内都运行得非常好。我相信这很可能是系统问题而不是我的程序问题。
答案1
树莓派上没有实时时钟(RTC)。
Raspberry Pi 被设计为超低成本计算机,因此我们在计算机上习惯的很多功能都被省略了。例如,您的笔记本电脑和计算机有一个小型纽扣电池供电的“实时时钟”(RTC) 模块,即使在电源关闭或电池取出时也能保持时间。为了保持低成本和小尺寸,Raspberry Pi 中不包含 RTC。相反,Pi 旨在通过以太网或 WiFi 连接到互联网,从全球 ntp(网络时间协议)服务器自动更新时间
您可以花大约 6 美元购买一个树莓派。否则 NTP 是您唯一的选择。