在python中停止raspbian / debian

时间:2017-10-07 07:44:28

标签: python linux raspbian

当我离开山区时,我会使用Raspberry Pi和一个小蟒蛇脚本来监控我的Photo-voltaic系统,以便每小时读取数据并将其发送到我的网页。这是由一个电子机械开关启动,点亮这些东西15分钟。但在此期间,脚本可能会运行两次,我想防止因为结果很混乱(lsdx.eu/GPV_ZSDX)。

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

任何提示? 感谢

3 个答案:

答案 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')

但我记住这些其他解决方案 再次感谢, 梅西