cronjob이 /var/mail/$USER에 쓰지 못하게 하시겠습니까?

cronjob이 /var/mail/$USER에 쓰지 못하게 하시겠습니까?

crontabmacOS에서 cronjob은 명령 출력 및/또는 오류 메시지(cron이 실패한 경우)를 파일에 기록하도록 구성됩니다 /var/mail/$USER. 이것을 예방할 수 있습니까? 나는 시도했다:

* * * * *      /sbin/ping -c1 website.com ... 2>&1 >/dev/null

도메인 도달 성공, 실패 여부에 관계없이 출력은 ping메일 파일에 저장됩니다...

답변1

cron 데몬은 을 쓰지 않지만 /var/mail/$USER작업이 무엇이든 출력하거나 실패할 때 사용자에게 이메일을 보내는 대신 시스템의 메일 배달 서비스를 통해 파일(사용자의 메일 받은 편지함)에 기록됩니다.

이메일 전송을 위해 cron 데몬을 끄려면 MAILTOcrontab 파일에서 이 변수를 null 값으로 설정하십시오.

MAILTO=""

# rest of file with job schedules goes here

crontab(5)macOS 시스템 매뉴얼에서 :

LOGNAME, , HOME및 외에도 "this" crontab에서 명령을 실행한 결과 메일을 보낼 이유가 있는지도 살펴봅니다 . 정의된 경우 (비어 있지 않은 경우) 메시지는 지정된 사용자에게 전송됩니다. 정의했지만 비어 있는 경우 ( ) 메일이 전송되지 않습니다. [...]SHELLcron(8)MAILTOMAILTOMAILTOMAILTO=""

이런 방식으로 작업 출력 및 오류 알림의 이메일 전송을 끄는 경우 다른 방법으로 작업을 기록해야 할 수도 있습니다. 예를 들면 다음과 같습니다.

* * * * *      /sbin/ping -c1 website.com ... >>/tmp/ping.log 2>&1
0 0,12 * * *   mv /tmp/ping.log /tmp/ping.log.old

ping이렇게 하면 특정 파일에 의 출력이 추가되고 자정과 정오에 해당 파일이 다른 곳으로 이동됩니다(리디렉션은 /dev/null뒤에서 앞으로 진행된다는 점에 유의하세요).

실패할 경우 명시적으로 이메일을 보낼 수도 있습니다 ping.

* * * * *      /sbin/ping -c1 website.com ... >>/tmp/ping.log 2>&1 || mail -s "ping failed, do something" "$LOGUSER"

ping0이 아닌 종료 상태가 반환될 때마다 지정된 헤더가 포함된 빈 이메일을 보냅니다.

MAILTO또는 로그 파일을 사용하거나 이메일을 보내지 않고도 처음부터 바로 리디렉션을 얻을 수 있습니다 .

* * * * *      /sbin/ping -c1 website.com ... >/dev/null 2>&1

이렇게 하면 실패할 때마다 이메일이 전송되지만 ping매분마다 명령 출력이 전송되지는 않습니다.

관련 정보