当我离开山区时,我会使用Raspberry Pi和一个小蟒蛇脚本来监控我的Photo-voltaic系统,以便每小时读取数据并将其发送到我的网页。这是由一个电子机械开关启动,点亮这些东西15分钟。但在此期间,脚本可能会运行两次,我想防止因为结果很混乱(lsdx.eu/GPV_ZSDX)。
我想在脚本末尾添加一些行,一旦它运行一次就停止它,并且可能在电源关闭之前停止raspbian以及干净的退出。 - “exit”仅退出循环,但脚本仍在运行 - 当然,Ctrl + C不会像我一样离开; 无法在StackOverflow或Rasbian帮助中找到这些高技术消息中的任何提示。
任何提示? 感谢
答案 0 :(得分:0)
exit()
命令应退出程序(break
是将退出循环的语句)。你看到了什么行为?
要关闭,请尝试:
python3:
from subprocess import run
run('poweroff', shell=True)
python2:
from subprocess import call
call('poweroff')
注意:poweroff可能在您的系统上被称为shutdown,并且可能需要额外的命令行开关来强制关闭(如果需要)。
答案 1 :(得分:0)
对于您的情况,使用以下构造将python脚本构造为函数:
def read_data():
data_reading_voodo
return message_to_be_sent
def send_message(msg):
perform_message_sending_voodo
log_message_sending_voodoo_success_or_failure
return None
if __name__ == "__main__":
msg = read_data()
send_message(msg)
结构如下,python脚本应在运行后退出。
接下来创建一个shell sript,如下所示(假设bash和python,但根据你的用法进行修改)
#!/bin/bash
python -m /path/to/your/voodo/script && sudo shutdown -h 6
sudo shudown -h 6
在脚本运行6分钟后关闭了raspberrypi。如果您想要停止运行重启循环,此选项有助于您在启动后有一些时间删除sript。
使shell脚本可执行:chmod 755 run_py_script_then_set_shutdown
有关详细信息,请参阅man chmod
现在创建一个cronjob以在启动时运行run_py_script_then_set_shutdown
。
crontab -e
然后将以下行添加到您的crontab
@reboot /path/to/your/shell/script
保存,重新启动pi,然后就完成了。 每次rpi启动时,python脚本都应该运行并退出。然后rpi将在python脚本退出后6分钟关闭。
您可以(应该)为您的目的调整6分钟。
答案 2 :(得分:0)
感谢所有这些帮助我学习Pyth和Deb的答案。 我终于在脚本结束时选择了一个非常简单的解决方案: 进口口 os.system('sudo shutdown now')
但我记住这些其他解决方案 再次感谢, 梅西