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
그러면 스크립트의 전체 경로 (예 : /etc/cron.daily/foo
)와 동일한 제목이 포함 된 이메일이 'stefanl@example.org'로 전송됩니다.
이에 대해 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에 대한 내 답변을 참조하십시오 . Cronjob stderr to file and email
보다 우아한 해결책은 /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)
man을 참조하십시오.
이 컴퓨터에 SA 액세스 권한이 있다고 가정하면 새 사용자 계정을 만들고이 계정 cron 작업에 작업을 추가 할 수 있습니다. 그런 다음이 사용자의 메일을 .forward 파일을 사용하여 전달할 수 있습니다. 이 계정 홈 폴더입니다. cron 작업에 권한있는 액세스가 필요한 경우이 사용자에 대한 권한을 설정해야 할 수 있습니다.
이것이 가장 적합한 지 Stefan의 대답이 가장 적합한 지 여부는 설정하는 데 얼마나 번거롭고 오류 메시지가 루트 이메일로 이동하길 원하는지 또는 일반적으로 매일 출력을 모니터링하는 사람들에게 전달되기를 원하는지에 달려 있습니다.
행운을 빕니다