Lubuntu cronjob;他のスクリプトを実行したり、パスを見ることはできません。

Lubuntu cronjob;他のスクリプトを実行したり、パスを見ることはできません。

私は仮想マシンでLubuntuを実行しており、VPNが有効になっていることを確認するために1分ごとに実行されるスクリプトを設定しようとしています。それ以外の場合は、すべてをオフにしてからもう一度オンにします。スクリプトを手動で実行すると、すべてが期待どおりに機能しますが、cronjobに設定するとほぼ毎回失敗します。

1つ目は、ルーティングテーブルを検出できないことです。手動で実行するとトンネルを見ることができますが、cronで実行すると失敗し、すべてを終了しようとします。

2つ目は、追加のスクリプト/プログラム設定を実行できないことです。 「VPN開始」ポイントに達してから終了します。すべての出力は常にここで停止しますが、cronでのみ手動で実行してVPNプログラムを起動します。

また、各 echo ステートメントに >>/h​​ome/localuser1/aqlog.txt を追加しないと、出力をファイルにリダイレクトできないようです。 cronコマンドに追加すると、何も起こりません。

#!/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)"

echo "Check VPN"
if [route | grep tun0 -c ]; then
    echo "VPN running, check qbit"
    if [pgrep qbit ]; then
        echo "All active, no action needed"
    else
        echo "Not active, starting qbit"
        nohup /usr/bin/qbittorrent >/dev/null &
    fi
else
    echo "no VPN, killing all"
    pkill qbit
    pkill pia
    sleep 2
    echo "Starting VPN"
    nohup /home/localuser1/.pia_manager/pia_manager/run.sh >/dev/null &
    echo "Waiting for VPN to start" 
    sleep 15
    echo "Check VPN active"
    if [route | grep tun0 -c]; then
        echo "VPN active, starting qbit"
        nohup /usr/bin/qbittorrent >/dev/null &
    else
        echo "No VPN, end of script"
        fi
fi
echo "Exiting script"   

また、crontabで次の設定を指定しました。ここで autoquit.sh は上記のスクリプトのランダムな名前です。

# m h  dom mon dow   command
* * * * * /home/localuser1/autoquit.sh

答え1

さて、Redditの便利なユーザーのおかげで答えを見つけたので、他の人が同じ障害物に遭遇した場合に備えてここに投稿する必要があると思いました。問題は、cronを介してGUIプログラムを起動しようとしていますが、ENV varを渡さないことです。つまり、これを表示する場所がわからないという意味です。 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

固定クローン作業:

# m h  dom mon dow   command
* * * * * export DISPLAY=:0 && /home/localuser1/autoquit.sh >> /home/localuser1/script_output.txt 2>&1

関連情報