Webアプリケーションが利用可能であることを確認し、Webアプリケーションデーモンを再起動して再実行するスクリプト(Stack Exchangeの助けを借りて)を作成しました(通常は作業を始める前に役立ちます)。毎時間実行する必要があります。
次の行を追加しましたsudo crontab -e
。
0 * * * * bash /usr/local/bin/test.sh
コンテンツtest.sh
:
#!/bin/sh
HTTP_STATUS=$(lynx -head -source https://example.com |head -1 |awk '{print $2}')
calendar=$(date "+%d-%m-%Y - %H:%M")
LOG="Log is placed in /usr/local/bin/test.log"
if [ "$HTTP_STATUS" = "503" ]
then
systemctl restart mydaemon
echo "$calendar - site unavailable ($HTTP_STATUS). Daemon restarted." >> test.log
elif [ "$HTTP_STATUS" = "200" ]
then
echo "$calendar - site available ($HTTP_STATUS)" >> test.log
else
echo "$calendar - site status unknown ($HTTP_STATUS)" >> test.log
fi
cronには2つの異なるスクリプトが予約されており、毎日真夜中に実行されることを除いてうまくいきます。私のすべてのスクリプトには、同じ権限と同じ所有者があります。
私のtest.log
ファイルは毎時間更新されないので、スクリプトは実行されないようです。ログエントリを手動で生成するには、スクリプトを実行します。
ベストアンサー1
crontab はログインシェルとは異なる環境でスクリプトを実行します。具体的には、PATHは異なる場合も定義されていない場合もあります。
コマンド(lynx、head ...)に絶対パスを使用してみてください。以下を使用して取得できます。
which <command>
また、test.logへのパスを指定する必要があります。