2017-10-07 35 views
-1

当我远离山峰时,我使用Raspberry Pi和一个小型python脚本监控我的Photo-voltaic系统,以便每小时读取数据并将其发送到我的网页。这是由一个电子机械开关发起的,该开关点亮了15分钟。但在此期间,该脚本可能会运行两次,因此我想避免因此而导致混乱(lsdx.eu/GPV_ZSDX)。从python中停止raspbian/debian

我想在脚本的末尾添加一行以停止它,一旦它运行一次,并可能停止raspbian以及在关闭电源之前的干净退出。 - “exit”只退出一个循环,但脚本仍在运行 - 当然,按Ctrl + C不会按我的方式去做; 无法在StackOverflow或Rasbian帮助中的这些高度技术性的消息中找到任何提示。

任何提示? 谢谢

+1

你会很高兴向我们展示你到目前为止所尝试过的吗?为什么它不起作用。为了让别人解决问题而不先尝试自己,来到这里并不是很好。例如,如果你想关闭你的RPi,为什么不尝试'os.system('shutdown -hP now')'或者类似的东西? – Torxed

+0

您应该针对特定的编程问题提出具体问题。由于Stack Overflow隐藏了你的密切原因:*“有些问题要求我们推荐或查找书籍,工具,软件库,教程或其他非本地资源,因为它们倾向于吸引自以为是的答案和垃圾邮件,因此不适合Stack Overflow。而是要描述问题以及到目前为止解决问题所做的工作。“* – jww

回答

0

exit()命令应退出程序(break是将退出循环的语句)。你看到什么行为?

要关闭,请尝试:

python3:

from subprocess import run 
run('poweroff', shell=True) 

python2:

from subprocess import call 
call('poweroff') 

注:关机,可以在您的系统被称为关机,可能需要额外的命令行开关强制关闭(如果需要)。

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分钟后的树莓派。这个选项可以帮助您在启动后有一段时间,如果您想要停止运行重新启动循环,请将其删除。

使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,就大功告成了。 每次启动时,python脚本都应该运行并退出。然后,在python脚本退出6分钟后,rpi将关闭。

你可以(应该)为你的目的调整6分钟。

0

感谢所有这些帮助我学习Pyth和Deb的答案。 我终于选择了在脚本的最后一个非常简单的解决方案: 进口OS 使用os.system(“现在须藤关机”)

但我牢记这些其他解决方案 再次感谢, 莱昂内尔