我想要一个简单的脚本,在使用Python以编程方式自愿关闭后5分钟,重新启动raspberry pi本身。我的脚本会立即重新启动。
if temp > 70:
os.system("sudo reboot")
我该如何实现?
参考方案
心甘情愿!
关机后如何继续工作?
好的,这是一个奇怪的问题,因为似乎很清楚,系统一旦停机就无法工作...。
但
可编程系统时钟可以在定义的时间唤醒系统。不幸的是,树莓派没有这种内置的计时器系统。
第二种方式:停止所有cpu加热服务。
如果没有完全关闭,则没有任何服务运行的系统将变得足够安静以进行冷却。
在Un * x下,以单用户模式切换时,系统不执行任何操作(无论如何都可能会运行raid同步...如果raspberry pi上没有raid,您可能需要在意,也许要停止raid,wifi和/或卸载一些模块,然后进入睡眠状态,然后重新启动)。
第三种方式:电气切断电源,继电器默认放电。
您可以创建一个带有一个小电池和一个5V继电器的小模块,以切断电源(通电时)。当电池电量耗尽或有一个小计时器时,您可以释放继电器,然后重新通电...
停止所有服务并在5'之后重启
您可以做一件事:
免责声明:这只是一个解决方案,因为我现在没有免费的raspi来进行测试,因为这取决于distrib和版本!您必须先了解自己的工作,然后再修改其中的一部分!
了解运行级别的工作方式
运行级别1是单用户模式
... 网络模式 ...
运行级别5是默认普通模式
将/etc/rc1.d/
复制到某些未使用的/etc/rc[2..4].d/
(保存后)
mv /etc/rc2.d /etc/rc2.d-old
cp -a /etc/rc1.d /etc/rc2.d
用于运行single
脚本的符号链接的注释号
ls /etc/rc2.d/S*single
lrwxrwxrwx 1 root root 16 jun 19 18:04 /etc/rc2.d/S32single -> ../init.d/single
放下他们
rm /etc/rc2.d/S32single
通过复制骨骼来创建自己的/etc/init.d/rebootIn5
cp /etc/init.d/skeleton /etc/init.d/rebootIn5
编辑它们以使start
函数包含类似
nohup sh -c 'sleep $((5*60)) ; reboot' &
可能是init 5
而不是reboot
,然后检查项值while (( $(</sys/.../therm_input) > 50 ));do sleep 20;done
而不是sleep 300
...
然后将它们链接到
ln -s ../init.d/rebootIn5 rc2.d/S32rebootIn5
通过脚本调用此命令:
if temp > 70:
os.system("sudo init 2")
也可以看看...
可以更简单地检查是否有服务正在加热您的系统。
(命令top
可以提供快速概述)
top -bn 1 | sed '/^ *PID USER/,+1{//d;p};d'
然后停止并仅重新启动一项或几项服务...
也可以通过在运行级别之间切换来完成。您必须将Rulevel 2
配置为4
,才能停止先前定义的所有服务。 Juste关心服务cron不会停止。
我在Windows上使用Python 3和sqlite3。我正在开发一个使用数据库存储联系人的小型应用程序。我注意到,如果应用程序被强制关闭(通过错误或通过任务管理器结束),则会收到sqlite3错误(sqlite3.OperationalError:数据库已锁定)。我想这是因为在应用程序关闭之前,我没有正确关闭数据库连接。我已经试过了: connectio…
Python pytz时区函数返回的时区为9分钟 - python由于某些原因,我无法从以下代码中找出原因:>>> from pytz import timezone >>> timezone('America/Chicago') 我得到:<DstTzInfo 'America/Chicago' LMT-1 day, 18:09:00 STD…
用大写字母拆分字符串,但忽略AAA Python Regex - python我的正则表达式:vendor = "MyNameIsJoe. I'mWorkerInAAAinc." ven = re.split(r'(?<=[a-z])[A-Z]|[A-Z](?=[a-z])', vendor) 以大写字母分割字符串,例如:'我的名字是乔。 I'mWorkerInAAAinc”变成…
如何打印浮点数的全精度[Python] - python我编写了以下函数,其中传递了x,y的值:def check(x, y): print(type(x)) print(type(y)) print(x) print(y) if x == y: print "Yes" 现在当我打电话check(1.00000000000000001, 1.0000000000000002)它正在打印:<…
Python:如何根据另一列元素明智地查找一列中的空单元格计数? - pythondf = pd.DataFrame({'user': ['Bob', 'Jane', 'Alice','Jane', 'Alice','Bob', 'Alice'], 'income…