crontab
macOS에서 cronjob은 명령 출력 및/또는 오류 메시지(cron이 실패한 경우)를 파일에 기록하도록 구성됩니다 /var/mail/$USER
. 이것을 예방할 수 있습니까? 나는 시도했다:
* * * * * /sbin/ping -c1 website.com ... 2>&1 >/dev/null
도메인 도달 성공, 실패 여부에 관계없이 출력은 ping
메일 파일에 저장됩니다...
답변1
cron 데몬은 을 쓰지 않지만 /var/mail/$USER
작업이 무엇이든 출력하거나 실패할 때 사용자에게 이메일을 보내는 대신 시스템의 메일 배달 서비스를 통해 파일(사용자의 메일 받은 편지함)에 기록됩니다.
이메일 전송을 위해 cron 데몬을 끄려면 MAILTO
crontab 파일에서 이 변수를 null 값으로 설정하십시오.
MAILTO=""
# rest of file with job schedules goes here
crontab(5)
macOS 시스템 매뉴얼에서 :
LOGNAME
, ,HOME
및 외에도 "this" crontab에서 명령을 실행한 결과 메일을 보낼 이유가 있는지도 살펴봅니다 . 정의된 경우 (비어 있지 않은 경우) 메시지는 지정된 사용자에게 전송됩니다. 정의했지만 비어 있는 경우 ( ) 메일이 전송되지 않습니다. [...]SHELL
cron(8)
MAILTO
MAILTO
MAILTO
MAILTO=""
이런 방식으로 작업 출력 및 오류 알림의 이메일 전송을 끄는 경우 다른 방법으로 작업을 기록해야 할 수도 있습니다. 예를 들면 다음과 같습니다.
* * * * * /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"
ping
0이 아닌 종료 상태가 반환될 때마다 지정된 헤더가 포함된 빈 이메일을 보냅니다.
MAILTO
또는 로그 파일을 사용하거나 이메일을 보내지 않고도 처음부터 바로 리디렉션을 얻을 수 있습니다 .
* * * * * /sbin/ping -c1 website.com ... >/dev/null 2>&1
이렇게 하면 실패할 때마다 이메일이 전송되지만 ping
매분마다 명령 출력이 전송되지는 않습니다.