홈 서버에 ping을 보내는 간단한 bash 스크립트가 있습니다. crontab에서는 오전 2시마다 실행되도록 구성했습니다. 그런 다음 핑 결과를 이메일로 보내주세요.
이상한 점은 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 환경 변수를 원하는 검색 경로로 설정하지 않는 한 명령 경로는 루트 디렉터리와 스크립트의 명령에서 시작해야 합니다.