Скрипт Raspberry crontab на python при загрузке

#python #raspberry-pi #crontab #boot

#python #raspberry-pi #cron #загрузка

Вопрос:

Я пытался запустить скрипт python при загрузке Rpi, но все, что я пробовал до сих пор, не сработало.

Сценарий представляет собой некоторую версию этого: 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)) " degreeCrn")
    sleep(60)  
    log.close()
  

Он отлично работает сам по себе. Я попытался отредактировать crontab с абсолютным путем к Python и без него, а также отредактировать /etc/rc.local

Я знаю, что это не работает, потому что он должен создавать текстовый файл и редактировать его каждую минуту, и он не создается при загрузке. У меня есть другие команды в crontab и rc.local, которые работают.

Нужна помощь, пожалуйста!

Комментарии:

1. crontab может выполняться с разными привилегиями, в другой среде и в другой папке — возможно, вам потребуется использовать полный путь для созданного файла.

2. Попробуйте указать абсолютный путь к файлу.

Ответ №1:

Если ваш скрипт находится в /home/pi/tempcheck.py crontab, вам следует отредактировать crontab с помощью

 sudo crontab -e
  

и добавьте строку

 @reboot python /home/pi/tempcheck.py amp;
  

затем сохраните и выйдите.

Более подробную информацию можно найти по адресу http://www.raspberrypi-spy.co.uk/2013/07/running-a-python-script-at-boot-using-cron /

Вы можете проверить, что он запущен с помощью

 ps aux | grep tempcheck.py
  

Обратите внимание, что если вы отредактируете crontab root, процесс python будет запущен от имени root. Поэтому вы должны использовать абсолютные имена файлов в скрипте python:

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

Комментарии:

1. Я не думал о добавлении абсолютного пути в сам скрипт, сейчас он работает. Спасибо!

Ответ №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.

Комментарии:

1. это не то, что он спрашивает

2. «Я пытался запустить скрипт python при загрузке Rpi» -> да, это именно то, что он спросил.

3. при загрузке, а не при открытии терминала