Python-скрипт GPIO не вызывает bash с подпроцессом через cron - PullRequest
0 голосов
/ 24 апреля 2019

У меня есть сценарий Python, вызывающий GPIOZERO для отслеживания нажатий кнопок, вызывающий несколько различных функций (отключение ЖК-дисплея и т. Д.), Которые работают из cron, но вызовы bash из подпроцесса этого не делают.Работает нормально из командной строки.Другие функции в этом скрипте работают, но не в этой, я дважды проверил абсолютные пути, и они кажутся правильными.

в myscript.py:

#!/usr/local/bin/python
sys.path.append('/home/pi/.local/lib/python2.7/site-packages')
import subprocess

#set global batch mode on or off
def running():
    global r
    r = not r
    if r is True:
         subprocess.Popen(['/home/pi/Documents/ytu/desktop_col.sh', 'run']) 
     print "run mode"

elif r is False:
     subprocess.Popen(['/home/pi/Documents/ytu/desktop_col.sh' ,'stop'])
     print "pause mode"

При запуске изPython, командная строка, скрипт работает нормально, но не из Cron или любого другого метода запуска.Это код bash, который он вызывает.Я переключаю фоновые рисунки рабочего стола для использования в качестве индикатора состояния.

    #!/usr/bin/bash
    alert_display=`cat /media/pi/VDRIVE/prefs/alert_display_number.txt`

   export XAUTHORITY=/home/pi/.Xauthority
   export DISPLAY=:$alert_display


   if [ "$1" = "run" ] ; then
     pcmanfm --set-wallpaper="/home/pi/Downloads/youtube-512.png"
     echo "run" > "/media/pi/VDRIVE/prefs/run-status.txt"
   elif [ "$1" = "stop" ] ; then
     pcmanfm --wallpaper-mode=color
     echo "stop" > "/media/pi/VDRIVE/prefs/run-status.txt"

   fi

1 Ответ

0 голосов
/ 25 апреля 2019

Оказывается, виновником был вызов pcmanfm.Отсутствовала строка:

    export XDG_RUNTIME_DIR=/run/user/1000

Это означало, что код не выполнялся в правильном пространстве дисплея.и либо выдает ошибку, либо говорит мне, что «Desktop Manager не активен»

нашел решение по адресу: Сбой установки обоев Pcmanfm на Raspbian stretch в cron

Надеждаэто кому-то помогает

...