Apache 서버의 프로세스를 확인하고 프로세스가 다운되면 이메일을 보내는 스크립트를 만들었습니다.
apache_down=`service httpd status | grep "inactive (dead)"`
echo “$apache_down" | mailx -s “APACHE_DOWN_`hostname`” [email protected]
스크립트는 수동으로 실행하면 제대로 작동합니다. 올바른 제목과 본문 "$apache_down"이 포함된 메일을 보냅니다.
그러나 crontab 아래에 배치하면 본문이 아닌 제목만 메일로 보냅니다.
*5 * * * * script.sh >/dev/null 2>&1
본문은 "" 만으로 비어 있습니다. 나는 mail -s를 사용했고 같은 결과를 얻었다. 내 스크립트, crontab 또는 mailx 설정에 문제가 있습니까?
답변1
을 체크 해봐$PATH명령 실행을 위해 올바르게 설정된 경우 변수를 설정하고, 그렇지 않은 경우 스크립트 또는 일반적으로 cron에 대해 설정합니다. $PATH가 바이너리에 대해 적절하게 설정되지 않은 경우,서비스명령이 실행되지 않거나 다음과 같이 실행하여 수동으로 추가해야 합니다./usr/sbin/서비스
또한 변수에 스크립트 내부에 출력이 있는지 확인을 추가해 보세요.
if [[ -n "$apache_down" ]]
then
echo “$apache_down" | mailx -s “APACHE_DOWN_`hostname`” [email protected]
else
echo "apache running fine" | mailx -s “APACHE_Running_`hostname`” [email protected]
fi