Ну, благодаря услужливому пользователю на Reddit, я смог понять это, поэтому я решил опубликовать здесь, если кто-то столкнется с таким же препятствием. Проблема в том, что я пытался запустить программу с графическим интерфейсом через cron, которая не пропускала переменную ENV, а это означает, что у нее не было возможности узнать, где отображать. Как только я добавил DISPLAY=:0 через этот полезный форум, он заработал точно так, как предполагалось, и теперь запускает программы.
Исправленный код ниже:
#!/bin/bash
PATH=/home/localuser1/bin:/home/localuser1/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/lib/jvm/java-8-oracle/bin:/usr/lib/jvm/java-8-oracle/db/bin:/usr/lib/jvm/java-8-oracle/jre/bin
echo "-----------------------------------Script started $(date)" >>/home/localuser1/aqlog.txt
echo "Checking VPN status" >>/home/localuser1/aqlog.txt
vpnstatus="$(route | grep tun0 -c)"
if [ "$vpnstatus" -gt "0" ]; then
echo "VPN is running, checking qbit" >>/home/localuser1/aqlog.txt
qbitstatus="$(pgrep qbit)"
if [ -n "$qbitstatus" ]; then
echo "All active, no action needed" >>/home/localuser1/aqlog.txt
else
echo "Not active, starting qbit" >>/home/localuser1/aqlog.txt
nohup qbittorrent >/dev/null &
fi
else
echo "no VPN, killing all" >>/home/localuser1/aqlog.txt
pkill qbit
pkill pia
sleep 2
echo "Starting VPN" >>/home/localuser1/aqlog.txt
nohup /home/localuser1/.pia_manager/pia_manager/run.sh >/dev/null &
echo "Waiting for VPN to start" >>/home/localuser1/aqlog.txt
sleep 15
echo "Checking if VPN is active" >>/home/localuser1/aqlog.txt
vpnstatustwo="$(route | grep tun0 -c)"
if [ "$vpnstatustwo" -gt "0" ]; then
echo "VPN is active, starting qbit" >>/home/localuser1/aqlog.txt
nohup qbittorrent >/dev/null &
else
echo "No VPN, end of script" >>/home/localuser1/aqlog.txt
fi
fi
echo "Exiting script" >>/home/localuser1/aqlog.txt
Исправлено задание cron:
# m h dom mon dow command
* * * * * export DISPLAY=:0 && /home/localuser1/autoquit.sh >> /home/localuser1/script_output.txt 2>&1