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
조사하다$경로명령을 실행하기 위해 변수가 올바르게 설정되어 있으면 스크립트나 일반적으로 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