CentOS 5.5를 실행하고 있습니다.
/etc/cron.daily/에 여러 cronjob이 저장되어 있습니다. 이 cronjob 중 일부에 대한 이메일은 특정 이메일 주소로 가고 /etc/cron.daily/에있는 나머지 이메일은 기본 이메일 주소 (root @ localhost)로 보내야합니다.
/etc/cron.daily/의 Cronjob은 / etc / crontab 파일에서 실행됩니다. / etc / crontab은 ‘MAILTO’필드를 지정합니다. /etc/cron.daily/foo cronjob에서 MAILTO를 설정하여이를 무시할 수 있습니까?
이것을 처리하는 가장 좋은 방법은 무엇입니까?
답변
설정 MAILTO=user@example.org
이 /etc/cron.daily/foo
작동하지 않습니다. 스크립트 출력은 user@example.org로 전송되지 않습니다.
http://www.unixgeeks.org/security/newbie/unix/cron-1.html 의 페이지 에서도 간단한 해결책을 제안합니다.
파일 /etc/cron.daily/foo
에는 이제 다음이 포함됩니다.
#!/bin/sh
/usr/bin/script 2>&1 | mailx -s "$0" stefanl@example.org
스크립트의 전체 경로와 같은 제목 (예 :)과 함께 ‘stefanl@example.org’로 이메일을 보냅니다 /etc/cron.daily/foo
.
Unixgeeks.org가 이에 대해 말한 내용은 다음과 같습니다.
cron에서 출력
앞에서 말했듯이 cron의 출력은 프로세스 소유자 또는 MAILTO 변수에 지정된 사람에게 메일로 발송되지만 원하지 않는 경우 어떻게해야합니까? 출력을 다른 사람에게 메일로 보내려면 출력을 명령 메일로 파이프하면됩니다. 예 :
cmd | mail -s “메일 제목”사용자
때로는 stdout이 아닌 cronjob에서만 오류를 수신하고 싶기 때문에이 트릭을 사용합니다. 구문은 언뜻보기에 틀리게 보일 수 있지만 제대로 작동하는지 확인하십시오. 다음 cronjob은 STDOUT을 / dev / null로 보낸 다음 파이프 라인을 통해 STDERR을 처리합니다.
doit 2>&1 >/dev/null | mailx -s "$0" stefanl@example.org
같은 것이지만 syslog로 보내십시오.
doit 2>&1 >/dev/null | /usr/bin/logger -t $ME
또한 파일 및 이메일 에 대한 ServerFault to Cronjob stderr 에 대한 내 답변을 참조하십시오.
답변
더 우아한 해결책은 /etc/cron.d
직접 사용 하는 것입니다. 에 스크립트를 /etc/cron.daily
넣는 대신 /usr/local/sbin/myscript.sh
다음 과 같이 어딘가에 넣고 파일을 만듭니다 /etc/cron.d/myscript
.
MAILTO=root,whomever@example.org
# run myscript.sh at 4:11 every day
11 4 * * * root /usr/local/sbin/myscript.sh
또한 작업이 수행되는 시점을 훨씬 더 잘 제어 할 수 있습니다. 예를 들어 특정 평일에만 해당됩니다. 자세한 내용은 해당 crontab(5)
남자를 참조하십시오.
답변
이 머신에 SA 액세스 권한이 있다고 가정하면 새 사용자 계정을 작성하고이 계정에 태스크를 추가 할 수 있습니다. cron 태스크. 그런 다음이 계정 홈 폴더의 .forward 파일을 사용하여이 사용자의 메일을 전달할 수 있습니다. Cron 태스크에 특권 액세스가 필요한 경우이 사용자에 대한 권한을 설정해야합니다.
이 답변 또는 Stefan의 답변이 가장 적합한 지 여부는 실제로 설정 해야하는 번거 로움과 오류 메시지를 루트 전자 메일로 보내거나 일상적인 출력을 일반적으로 모니터링하는 사람에게 보낼지 여부에 달려 있습니다.
행운을 빕니다