我有一个调用 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