cron이 메일 대신 * 기본적으로 * 작업 출력을 로그에 쓸 수 있습니까?


23

cron 작업의 출력을 처리하는 올바른 방법은 파일로 리디렉션하는 것입니다.

0 * * * * /bin/date >> /var/log/date.log 2>&1

그러나 때로는 관리자가 게 으르거나 잊어 버리거나 무지하며 이러한 리디렉션을 넣지 않습니다. 이 경우 작업 출력은 $ MAILTO 또는 소유하는 사용자 또는 루트로 메일로 전송됩니다. 내가 관리하는 일부 상자에서 메일을 사용할 수 없으므로이 출력은 블랙홀로 들어갑니다. 내가 궁금한 점은 cron에게 작업 출력을 가져 와서 메일을 보내지 않고 어딘가에 잡을 수있는 로그 파일에 넣을 수있는 방법이 있습니까? 우분투 (8.04를 사용하지만 9.04로 마이그레이션)를 사용하고 있습니다. 이 임의의 Google 결과 에는 그러한 해결책에 대한 힌트가 있지만 OP는 cron 출력과 cron 작업의 출력에 대해 혼동되었을 수 있습니다.

나는 약간의 스크립팅이나 해킹과 관련된 솔루션에 개방적이지만 이상적으로는 어딘가에 설정할 수있는 구성 비트 일 것입니다. 에 힌트가 표시되지 않습니다 man cron. 감사!

답변:


1

들어 cronie(젠투 핸드북에 의해 예를 들어 권장) 크론, 시스템 로그를 사용하여 시스템 로그에 작업 출력을 전송 크론 호출에 인수가 "-s"입니다.


3

짧은 대답은 아니오입니다. cron은 의도적으로 crontab의 소유자에게 메일을 보냅니다. 표준 cron에서는이를 변경할 수있는 방법이 없습니다.

내가 생각할 수있는 가장 좋은 방법은이 동작이 사용자 사서함 대신 로그 파일에 메일을 덤프하도록하려는 컴퓨터에서 MTA를 구성하는 것입니다.


3

"메일을 사용할 수 없습니다"라고 말할 때 정확히 무엇을 의미하는지 잘 모르겠습니다. 그러나 /etc/aliases파이프 에 대한 별칭을 설정할 수 있습니까? 같은 것

root: "|/bin/cat >> /var/log/cron.log"

root: /var/log/cron.log작동하지 않습니까? feep.net/sendmail/tutorial/intro/aliases.html
endolith

나에게도 아무것도하지 않습니다.
endolith

sendmail을 MTA로 실행하는 경우에만 작동합니다. 이것은 덜 흔해지고 있습니다. (예, 5 살짜리 의견에 답하고 있음을 알고 있습니다!)
Alex L

2

나는 당신이 요구하는 것이 실제로 우분투 (또는 다른) 크론으로 가능하다고 생각하지 않습니다.

geekmonkeys 아이디어 외에도 $ MAILTO 를 로컬 계정으로 설정하고 procmail을 통해 출력을 라우팅 할 수도 있습니다 .


1

cron에 대한 그러한 설정에 대해 들어 본 적이 없으므로 스크립팅 경로를 사용합니다.

/ var / spool / cron / *를 순찰 할 크론 작업을 작성하고없는 작업에 리디렉션을 추가하십시오.


1

또 다른 옵션은 cron_wrapper 또는 이와 유사한 쉘 스크립트를 작성하고 다음과 같이 수행하는 것입니다.

#! / bin / sh

평가판 "$ * >> /var/log/cronlog.log"
$를 종료 하시겠습니까?

그런 다음 모든 crontab에 다음과 같은 것이 필요합니다.

* * * * * / usr / local / bin / cron_wrapper echo hello

참고이 코드는 테스트하지 않았으며 아이디어 일뿐입니다.


1
문제가 해결되지 않습니다. 사람들이 MAILTO를 설정하거나 stdout을 파일로 리디렉션하는 것을 기억하지 못하면 래퍼를 통해 물건을 실행해야한다는 것을 기억하지 못합니다.
Kamil Kisiel

1

나는 "표준 크론"이 무엇인지 모른다. 많은 크론 데몬이 있으며, 다른 배포판은 다른 데몬을 사용합니다. Vixie cron은 가장 광범위하게 배포되므로 아마도 이것이 의미하는 바일 것입니다. 그러나 일부 배포판에서는 기본값이 아닙니다.

Arch Linux의 기본값 인 Dillon의 cron (dcron) 개발을 인수했습니다 . 다른 배포판에서도 사용하지만 기본 설정인지 다른 곳에서는 알 수 없습니다. dcron에는 -Msendmail 대신 사용자 정의 스크립트를 사용하도록 지정 하는 호출 옵션 이 있습니다. 스크립트는 인수없이, 몇 개의 이메일 헤더와 &>cronjob 의 출력을 stdin 으로하여 호출됩니다 . ( &>출력이 없으면 스크립트가 호출되지 않습니다.)


1

특정 사용자의 crontab에서 MAILTO = ""를 설정하지 않는 이유는 무엇입니까? 그러면 / var / spool / mail /에서 메일 메시지 로깅이 비활성화됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.