シェルスクリプトはCronとして実行されず、手動で実行されます。

シェルスクリプトはCronとして実行されず、手動で実行されます。

私はすべてを試したようです。 Googleには約20ページの検索履歴があり、この問題を解決しようとしましたが、何も効果がありませんでした。デフォルトでは、tun0インターフェイスがあることを確認し、そうでない場合はコンピュータを再起動するスクリプトがあります。コードは次のとおりです。

#!/bin/bash
. /etc/profile
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
if echo `ifconfig` | grep -q "tun0"
then echo ""
else
    reboot
fi

そのパスを使用して端末からスクリプトを呼び出すと、スクリプト自体が正しく実行されます。

/scripts/vpnrestart1.sh

crontab -e の上部に以下を追加しました。

SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

私のクローンの仕事は次のとおりです。

* * * * * /scripts/vpnrestart1.sh

スクリプト自体には優れた権限があり、sudoなしで実行できます。前述のように、端末で正しく動作し、設計どおりに動作します。しかし、cronに入れてtun0インターフェイスを削除すると、何も起こりません。

ベストアンサー1

実行時に何が起こるかを確認するためにスクリプトをデバッグしてみましたかcron?スクリプトに次のコードを挿入します。

# log stdout and stderr to two different files
exec >>/var/log/looog.log 2>>/var/log/looog.err.log

# ...and log every command we try to execute to stderr (aka looog.err.log)
set -x

スクリプトを実行すると、これら2つのファイルが生成され、何が起こっているのかを確認できます。

おすすめ記事