У меня есть сценарий 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