모니터링 스크립트를 하나 만들었는데 그냥 실행하면 괜잖은데 cron등록하면 문제가 생깁니다...

sunsung의 이미지

가끔 프로세스가 죽거나 defunct가 생기는 경우가 있어서 문제가 발생하면

메일로 메시지를 보내게끔 간단한 프로세스 모니터링 쉘을 만들었습니다.

sh mon.sh 실행하면 제대로 메일이 들어오는데 cron에 등록시켜서 1분마다 돌아가게끔 해뒀는데

이상하게 cron에 등록해두면 제대로 메일이 발송되지 않습니다.

제가 잘못 작성한건지... cron에 등록할 쉘은 다른식으로 해야되는지 잘 모르겠네요

조잡한 스크립트지만 전문가분들의 조언 부탁드립니다.
---------------------------------------------
#!/bin/bash
#daemon PID
ps -C processname > /root/processname_ps.log

KR_PID=`ps -C processname -o pid= | head -n1`
DEFUNCT_PID=`grep defunct /root/processname_ps.log | cut -f 1 -d " " | head -n1`

C_DATE=`date "+%Y-%m-%d %H:%M:%S"`

#HOST_NAME=`processname`

#admin email
MAIL_TO=XXXXXXX@gmail.com

#sender email
MAIL_FROM="processname@xxx.xx.xx"

#email content
MAIL_CONTENT="Return-Path: <$MAIL_FROM>
From: <$MAIL_FROM>
To: $MAIL_TO
Subject: [processname] processname process error!!!!!!.[$C_DATE]
MIME-Version: 1.0
Content-Type: text/html; charset=euc-kr
date : $C_DATE

write : Whois Daemon Monitor

process error

."

# $WHOIS_PID = 0
if [ $KR_PID ];
then
echo "-----down-----"
echo $KR_PID
echo "[$C_DATE] process down ." >> /var/log/processname .log
echo -e "$MAIL_CONTENT" | sendmail -f $MAIL_FROM $MAIL_TO
elif [ $DEFUNCT_PID ];
then
echo "-----defunct-----"
echo $DEFUNCT_PID
echo "[$C_DATE] process defunt ." >> /var/log/processname .log
echo -e "$MAIL_CONTENT" | sendmail -f $MAIL_FROM $MAIL_TO
fi

academic의 이미지

얼핏 봤을 때

C_DATE=`date "+%Y-%m-%d %H:%M:%S"`

이런 식으로 하면 cron에서 돌릴 때 문제가 생길 겁니다.

cron이 %를 특수한 용도로 사용하기 때문이라고 알고 있습니다.

% 앞에 \를 붙여서 테스트해보시죠.

----
academic은 제 고등학교 때 동아리 이름입니다.
academic, 아주 가끔은 저도 이랬으면 좋겠습니다.

Fe.head의 이미지

export PATH= 알아서.. /bin:/usr/bin:/sbin:/usr/sbin 등을 추가.

를 추가도 해보세요.

고작 블로킹 하나, 고작 25점 중에 1점, 고작 부활동
"만약 그 순간이 온다면 그때가 네가 배구에 빠지는 순간이야"

sunsung의 이미지

두 분 조언대로 해봤는데 잘 안되네요...

로그를 보니

echo -e "$MAIL_CONTENT" | sendmail -f $MAIL_FROM $MAIL_TO

이부분에서 sendmail 에러가 발생합니다.

그냥 실행했을때는 잘 되는데 cron에 등록했을때 sendmail 에러가 나는건 왜일까요..ㅜ.ㅜ

이양반의 이미지

어떤 에러인지는 알수 없을까요? 제가 보기에도 문제는 없어 보이는데......
아니면 echo 내용을파일로 보내고 그 파일을 sendmain 로 보내면 얼떨까요?

Gnu is Not Unix

ymir의 이미지

잘 동작하는 script 가 cron 에서 문제를 일으키는 경우는 대부분 환경변수 때문입니다.
특히나 PATH 가 그렇고, 그 외에 로그인 쉘의 환경 변수를 사용하는 프로그램들이 그렇습니다.
sendmail 에서 사용하는 환경변수가 따로 있는지 확인해 보세요.

syslog 에서 cron 과 관련된 로그가 있는지 확인해 보시고..
sendmail 의 stdout, stderr 를 다른 파일에 적어두거나 해서 실행 결과를 직접 확인해 볼 수도 있을 것입니다.
아니면 cron 에 등록하면서 위 스크립트의 stdout, stderr 를 redirect 하도록 할 수도 있구요..

되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.