Raspberry-pi 在编程重启后不断重启
Raspberry-pi reboots constantly after programmed reboot
我们有一个树莓派 运行 一个 python WSGI。在 cron 中安排了每日重启:
0 9 * * * reboot
树莓派配置为以只读模式启动。
当我们在写入模式更新软件时发生重启,树莓派进入每分钟重启的循环。如果我们在下次重新启动之前设法连接并再次更改为 写入模式 ,则此行为将停止。
为什么会发生这种情况,如何避免?
我们找到了问题的原因,部分解决方案和完整解决方案,但涉及为树莓派购买硬件。
问题
重启瞬间,系统将当前时间戳记为最后有效时间。这只有在我们设置写模式时才有可能。重启后,树莓派使用最后一个有效时间作为当前时间,而无法从 NTC 服务器获取实时时间。由于计划在此时启动,因此设备会再次重新启动。
如果在重启前有新时间可用于写入,则在下次重启前将树莓派设置为写入模式可以解决此问题。
部分解决方案
不使用重启,而是使用 shutdown -r 来延迟重启时间。
0 9 * * * shutdown -r 5
这将避免写入预定的重启时间。
完整的解决方案
给树莓派买一个NTC模块,让设备随时知道实时时间。
我们有一个树莓派 运行 一个 python WSGI。在 cron 中安排了每日重启:
0 9 * * * reboot
树莓派配置为以只读模式启动。
当我们在写入模式更新软件时发生重启,树莓派进入每分钟重启的循环。如果我们在下次重新启动之前设法连接并再次更改为 写入模式 ,则此行为将停止。
为什么会发生这种情况,如何避免?
我们找到了问题的原因,部分解决方案和完整解决方案,但涉及为树莓派购买硬件。
问题
重启瞬间,系统将当前时间戳记为最后有效时间。这只有在我们设置写模式时才有可能。重启后,树莓派使用最后一个有效时间作为当前时间,而无法从 NTC 服务器获取实时时间。由于计划在此时启动,因此设备会再次重新启动。
如果在重启前有新时间可用于写入,则在下次重启前将树莓派设置为写入模式可以解决此问题。
部分解决方案
不使用重启,而是使用 shutdown -r 来延迟重启时间。
0 9 * * * shutdown -r 5
这将避免写入预定的重启时间。
完整的解决方案
给树莓派买一个NTC模块,让设备随时知道实时时间。