내 우분투 데스크탑과 데비안 서버에는 1 분마다 실행 해야하는 스크립트가 있습니다 (내 우주 온라인 브라우저 게임 의 미세한 요소를 호출하는 스크립트 ).
문제는 데비안 파생물에서 cron이 /var/log/syslog
실행될 때마다 로깅한다는 것입니다. 나는 그것이 반복적으로 실행 된 메시지를 반복해서 보았습니다 /var/log/syslog
.
Nov 11 16:50:01 eclabs /USR/SBIN/CRON[31636]: (root) CMD (/usr/bin/w3m -no-cookie http://www.spacetrace.org/secret_script.php > /dev/null 2>&1)
프로그램의 출력을 억제하기 위해 프로그램으로 리디렉션 할 수 있다는 것을 알고 있습니다. /dev/null
예를 들어 프로그램에서 모든 오류 및 경고 메시지를 숨기려면 crontab에 다음과 같이 줄을 만들 수 있습니다
* * * * * root /usr/local/sbin/mycommand.sh > /dev/null
그러나 cronjob을 실행하고 생성 된 모든 출력 또는 오류가 NULL로 파이프되도록하므로 syslog에 메시지를 생성하지 않으며 전자 메일을 생성하지 않습니다
편집 : 여기 에 제안 된 것처럼
cron-logs를 별도의 로그로 리디렉션하는 솔루션이 있습니다./etc/syslog.conf
그러나 단점은 모든 cronjob의 모든 출력이 리디렉션된다는 것입니다.
어떻게 든 단일 cronjob을 별도의 로그 파일로만 리디렉션 할 수 있습니까? cron.hourly
파일 자체 내에서 구성 할 수있는 것이 좋습니다.
MAILTO=""
crontab의 첫 번째 줄은 모든 이메일을 차단합니다. 또한 모든 출력을 억제하는 경우 명령 행에서 전체 trifecta를 사용하십시오. 모든 3 가지 종류가이 문자열로 경로 재 지정됩니다 >/dev/null 2>&1
.
MAILTO=""
cron 파일의 시작 부분에 넣을 수도 있습니다. 모든 이메일이 표시되지 않습니다. 그리고 작업 출력을 syslog로 보내는 cron 데몬에 대해 들어 본 적이 없습니다 (그러나 가능하다고 생각합니다).