GPIO python脚本未通过cron

时间:2019-04-24 07:49:23

标签: python bash gpio pcmanfm

我有一个Python脚本,它调用GPIOZERO来监视按钮的按下,并调用了cron的一些不同功能(关闭LCD等),但是从子进程调用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 :(得分:0)

原来是pcmanfm呼叫是罪魁祸首。 缺少这一行:

    export XDG_RUNTIME_DIR=/run/user/1000

这意味着代码未在正确的显示空间中执行。并抛出错误,或告诉我“ Desktop Manager未激活”

在以下位置找到了解决方案: Pcmanfm set wallpaper fails on Raspbian stretch in cron

希望这对某人有帮助