【问题标题】:GPIO python script not calling bash with subprocess via cronGPIO python脚本不通过cron调用带有子进程的bash
【发布时间】:2019-04-24 07:49:22
【问题描述】:

我有一个调用 GPIOZERO 的 Python 脚本来监视按钮按下,调用一些不同的函数(关闭 LCD 等)这些从 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

【问题讨论】:

  • 更新,我将脚本调用添加到 /etc/rc.local,现在它在启动时运行,但我收到错误“桌面管理器未激活”。所以由于某种原因,pcmanfm 命令将无法正确调用。

标签: python bash gpio pcmanfm


【解决方案1】:

原来是 pcmanfm 调用才是罪魁祸首。 错过了这条线:

    export XDG_RUNTIME_DIR=/run/user/1000

这意味着代码没有在正确的显示空间中执行。并且要么抛出错误,要么告诉我“桌面管理器未激活”

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

希望这对某人有所帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-15
    • 2013-09-26
    • 2013-12-23
    • 2015-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-26
    相关资源
    最近更新 更多