ホームサーバーにpingを送信する単純なbashスクリプトがあります。 crontabでは午前2時ごとに実行するように設定しました。その後、ping結果をメールでお送りください。
奇妙なことは、crontabで何を設定しても常に1分ごとに実行されることです。なぜこれが起こるのかご存知ですか?
0 2 * * * pinger.sh
スクリプト
#!/bin/sh
masterip="192.168.2.1"
pname="Home Server"
sender="From: Server Monitoring <[email protected]>"
subject="$pname Server Connectivity"
mail="[email protected]"
ping -c1 $masterip
if [ "$?" = 0 ];
then
pingmessage="$pname is reachable via LAN IP $masterip"
pingms=$(ping -c 1 $masterip | sed -ne '/.*time=/{;s///;s/\..*//;p;}')
else
pingmessage="$pname is unreachable via LAN IP $masterip"
pingms=$(ping -c 1 $masterip | sed -ne '/.*time=/{;s///;s/\..*//;p;}')
fi
{
echo "$pingmessage"
echo "with $pingms ms ping"
} | mail -a "$sender" -s "$subject" $mail
答え1
crontabのコマンドにリダイレクトを接続する場合
"Command >> /path/to/log 2>&1"
出力が表示されます。
Cronはまだ環境を選択していないため、/path/to/command
PATH環境変数を目的の検索パスに設定しない限り、コマンドパスはルートディレクトリとスクリプトのコマンドから開始する必要があります。