我有一个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
答案 0 :(得分:0)
原来是pcmanfm呼叫是罪魁祸首。 缺少这一行:
export XDG_RUNTIME_DIR=/run/user/1000
这意味着代码未在正确的显示空间中执行。并抛出错误,或告诉我“ Desktop Manager未激活”
在以下位置找到了解决方案: Pcmanfm set wallpaper fails on Raspbian stretch in cron
希望这对某人有帮助