구성하지 않은 Centos 6 상자에서 cron이 메일을 보내지 않는 문제를 디버깅하려고합니다. 메일을 보내는 데 어떤 메일러 cron을 사용하고 있는지 어떻게 알 수 있습니까? crontab 매뉴얼 페이지에는 다음과 같은 내용이 있습니다.
cron (8)은 LOGNAME, HOME 및 SHELL 외에도 “this”crontab에서 명령을 실행 한 결과 메일을 보낼 이유가있는 경우 MAILTO를 확인합니다. MAILTO가 정의되고 비어 있지 않은 경우 이름이 지정된 사용자에게 메일이 전송됩니다. MAILTO가 정의되어 있지만 비어 있으면 (MAILTO = “”) 메일이 전송되지 않습니다. 그렇지 않으면 메일은 crontab의 소유자에게 전송됩니다. 이 옵션은 cron을 설치할 때 / usr / lib / sendmail 대신 / bin / mail을 메일러로 결정할 때 유용합니다. / bin / mail은 앨리어싱을 수행하지 않으며 UUCP는 일반적으로 메일을 읽지 않습니다.
별표가있는 부분은 “글쎄, 그것은 메일이나 메일입니까?”
답변
빠른 Google은 /etc/sysconfig/crond
cron에서 사용하는 메일러를 정의하는 파일임을 보여줍니다 .
답변
cron (8) (실제로 메시지를 보내는 데몬)의 매뉴얼 페이지에 따르면 :
-m This option allows you to specify a shell command string to use for
sending cron mail output instead of sendmail(8). This command must
accept a fully formatted mail message (with headers) on stdin and send
it as a mail message to the recipients specified in the mail headers.
그것은 기본적으로 sendmail을 사용하고 있다고 믿게합니다. strace로 확인합시다 :
이메일을 생성 할 크론 작업을 설정하십시오.
user@host1 ~:
$ crontab -e
crontab: installing new crontab
user@host1 ~:
$ crontab -l
MAILTO=example@example.com
*/5 * * * * echo "testing"
이제 crond의 프로세스 ID를 찾으십시오.
user@host1 ~:
$ ps auxww | grep crond
root 9684 0.0 0.0 117280 1296 ? Ss Jul22 0:17 crond
user 36344 0.0 0.0 103240 884 pts/2 S+ 23:01 0:00 grep crond
프로세스 관련 활동을 찾아 strace를 사용하여 크론 드 프로세스에 연결하십시오. strace가 stderr에 쓸 때 stdout으로 리디렉션하고 ‘mail’을 위해 grepped했습니다.
root@host1 ~:
# strace -fp 9684 -s 1024 -e trace=process 2>&1 | grep mail
[pid 36204] execve("/usr/sbin/sendmail", ["/usr/sbin/sendmail", "-FCronDaemon", "-i", "-odi", "-oem", "-oi", "-t", "-f", "root"], [/* 16 vars */]) = 0
^C
네, 센드 메일입니다.