ボタンの押下を監視するために GPIOZERO を呼び出し、いくつかの異なる機能 (LCD をオフにするなど) を呼び出す Python スクリプトがありますが、これらは 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