【问题标题】:Raspberry crontab python script at boot引导时的覆盆子 crontab python 脚本
【发布时间】:2016-10-02 09:55:15
【问题描述】:

我一直在尝试在 Rpi 启动时启动 python 脚本,但到目前为止我尝试的所有方法都不起作用。

脚本是这个的一些版本:https://www.raspberrypi.org/learning/temperature-log/worksheet/

#!/usr/bin/python
import os, sys
from subprocess import check_output
from re import findall
from time import sleep, strftime, time

def get_temp():
    temp = check_output(["vcgencmd","measure_temp"]).decode("UTF-8")
    temp = float(findall("\d+\.\d+",temp)[0])
    return(temp)

while True:
    log=open("cpu_temp.txt","a")
    temp = get_temp()
    log.write("{0} {1}".format(strftime("%Y-%m-%d %H:%M:%S"),str(temp))+" degreeC\r\n")
    sleep(60)  
    log.close()

它本身就可以正常工作。我尝试编辑 crontab,有和没有 Python 的绝对路径,以及编辑 /etc/rc.local

我知道它不起作用,因为它应该创建一个文本文件并每分钟对其进行编辑,而且它不是在启动时创建的。我在 crontab 和 rc.local 中有其他正在运行的命令。

需要帮助!

【问题讨论】:

  • crontab 可能以不同的权限在不同的环境和不同的文件夹中运行 - 您可能需要使用创建文件的完整路径。
  • 尝试使用文件的绝对路径。

标签: python raspberry-pi crontab boot


【解决方案1】:

如果您的脚本位于/home/pi/tempcheck.py,您应该使用

编辑 crontab
sudo crontab -e

并追加该行

@reboot python /home/pi/tempcheck.py &

然后保存退出。

更多详情请访问http://www.raspberrypi-spy.co.uk/2013/07/running-a-python-script-at-boot-using-cron/

您可以检查它是否正在运行

ps aux | grep tempcheck.py

请注意,如果您编辑 root 的 crontab,python 进程将以 root 身份运行。所以你应该在 python 脚本中使用绝对文件名:

log=open("/home/pi/cpu_temp.txt","a")

【讨论】:

  • 我没想到在脚本本身中添加绝对路径,它现在可以工作了。谢谢!
【解决方案2】:
sudo crontab -e

@reboot /usr/bin/python /path/to/file/script.py

/path/to/file/script.py 可能类似于 /home/username/script.py

如果它仍然不起作用,您可以尝试通过以下方式授予它执行权限:

chmod a+x script.py

【讨论】:

    【解决方案3】:

    您可以在~/.bashrc 文件中调用您的脚本。它将在启动或终端打开时调用。

    只要写:

    python /path/to/your/script.py
    

    在 .bashrc 文件的末尾。

    【讨论】:

    • 这不是他要求的
    • “我一直在尝试在 Rpi 启动时启动 python 脚本”--> 是的,这正是他所要求的。
    • 在启动时,而不是在终端打开时
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多