【问题标题】:raspbian: getting a script to start on launch troubleshootingraspbian:获取脚本以启动启动故障排除
【发布时间】:2017-07-06 17:53:43
【问题描述】:

所以我试图让this python 脚本在启动时运行。它应该保持大部分静止,但是当触发运动传感器时,我希望相机开始录制并且电机移动。最终,这个过程需要在我无头时发生,所以让它在启动时自动启动是最简单的方法。我尝试使用thisinit.d 文件使其自动运行,但我收到以下错误消息:

Starting mylauncher from: can't read /var/mail/gpiozero from: can't read /var/mail/gpiozero from: can't read /var/mail/picamera /home/pi/Detector.py: 4: /home/pi/Detector.py: import: not found from: can't read /var/mail/time /home/pi/Detector.py: 7: /home/pi/Detector.py: Syntax error: "(" unexpected

我用谷歌搜索了它,人们建议将#!/usr/bin/python 作为第一行,但是当我这样做时,我得到了

File "/etc/init.d/mylauncher", line 18 case "$1" in ^ SyntaxError: invalid syntax

我怎样才能摆脱这两个错误并确保脚本在启动时运行?

【问题讨论】:

  • 欢迎来到 Stack Overflow!尝试对您的问题进行尽可能多的调试(特别是因为您的测试条件很难重新创建),并尽可能多地提供有关您的发现的信息,以便有人能够帮助您。确保您对任何您认为有用的答案进行投票,并在留出足够的时间让每个人回答(半天左右)之后,选择最能回答您问题的答案(如果有)。

标签: python raspberry-pi raspbian


【解决方案1】:

您是否将#!/usr/bin/python 添加到init.d 脚本中?他们可能意味着您应该将其添加到 python 脚本中。

#!/usr/bin/python 告诉 shell 使用什么来运行脚本,所以在

# run application you want to start
/home/pi/Detector.py

它将使用python 执行脚本。

【讨论】:

  • 如此接近!非常感谢您,现在它成功启动了一次程序。但是,一旦视频第一次完成录制,电机就会开始旋转并且永不停止。反正有没有让它无限次运行python脚本?当我直接从 python 编辑器运行它时,电机没有问题,只有当我使用 sudo /etc/init.d/mylauncher start 命令时才会发生这种情况。另外,当我重新启动 Pi 时,python 脚本也没有激活,这很奇怪,因为那个小测试有点工作。
  • 听起来你想要一个守护进程(它一直在后台运行)。您可以将脚本作为daemon from the sell 运行,也可以使用python script itself create a daemon 并退出。另外,输入python脚本的常用方法是if __name__ == "__main__":
  • 我不知道为什么只有当你从外壳运行电机时它才会继续移动。虽然通过快速查看您的 python 代码,看起来您在实际开始录制任何内容之前完成了所有电机操作?无论如何,您的“守护程序”可能会有某种无限循环(理想情况下,如果您杀死您的守护程序,则可以干净地退出 - 提示:您必须处理 SIGTERM 信号)。
  • 我建议实现守护进程,并在启动时从init.d 启动它之前从常规shell 对其进行测试。确保你可以启动它,它可以工作,你可以停止它等等。
  • 等等,它不应该在启动时启动,因为它在 init.d 文件夹中吗?哇,感谢您提供这些链接,我只做了一个星期,所以我会尽力实现它。
【解决方案2】:

好的,我想通了。原来我的 Python 代码在启动代码主体之前缺少while True:,这使它运行一次而不是多次。除此之外,我还从 init.d shell 文件中删除了一些关键组件,这些组件看似是 cmets,但实际上是关于何时启动和停止它的重要信息。此外,我必须将#!/usr/bin/python 放在我的 Python 脚本之前,以便 init.d 文件知道它正在用 Python 读取它。最后,我使用了python /home/pi/Detector.py 而不仅仅是/home/pi/Detector.py,因为即使我在python 脚本中有#!/usr/bin/python,它也不能与后者一起使用。最后,没有必要对 shell 或 python 脚本进行守护。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-25
    • 1970-01-01
    • 2013-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-25
    相关资源
    最近更新 更多