[Linux] cron 결과 메일 개별 관리 하기
페이지 정보
작성자 서방님 댓글 0건 조회 118회 작성일 17-05-22 09:04본문
inux에서 자동화를 위해서 cron이라는 서비스를 사용하는 사람이 많다.
분단위 자동화 시스템을 돌려 놓고 메일을 확인하니 메일량이 너무도 많아서 확인도 안되고 관리도 안되어서
분단위나 혹은 시간단위 cron 만 메일을 보내지 않도록 처리했다.
cron 설정 파일인 crontab 파일을 열어서 아래와 같이 수정 하면 해당 명령이 실행되어도 메일이 오지 않는다.
* 기존 crontab 파일
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# run-parts
* * * * * root run-parts /etc/cron.minute
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
* 변경 후 crontab 파일
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# run-parts
* * * * * root run-parts /etc/cron.minute > /dev/null 2>&1
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
여기서 변경된 부분은 매분 마다 실행되는 parts 에 > /dev/null 2>&1 를 붙여준 것 밖에 없다.
적용이 다 되었으면 cron 서비스를 다시 시작 한다.
시스템 서비스로 등록해두었다면 - service crond restart
시작 서비스로만 등록해두었다면 - /etc/init.d/crond restart
* 참고
' > /dev/null 2>&1 '의 의미
위와 같이 작성을 하고나면 해당 메일이 왜 오지 않는지에 대해서 잠깐 이야기 해보자.
시스템에는 표준입력(0), 표준출력(1), 표준에러(2)가 있으며 각각 0, 1, 2라는 파일 디스크립터(식별자)로 연결 된다.
첫번째 '>'
ls > test.txt 라는 명령어를 입력하게 되면 디렉토리안에 파일을 콘솔에 출력하지 않고 파일에 작성 된다.
여기서 '>' 명령어는 파일 재지향을 뜻한다. 그리고 생략된 부분이 있는데 원래 명령어를 모두 쓰면 ls 1> test.txt 가 된다.
파일 재지향은 표준적으로 입력, 출력이 이뤄지는 부분을 다른 곳에서 받아서 입력, 출력이 가능 하도록 해준다.
위에 명령어를 풀어서 쓰면 'ls의 표준출력을 하지 않고 파일 test.txt에 저장 해라'가 된다.
두번째 '/dev/null'
/dev/null 은 linux에서 거의 블랙홀에 해당 된다. 넣으면 꺼낼수도 없으며 버린다는 표현이 맞을 것 같다.
세번째 '2>&1'
풀어서 쓰면 '표준에러(2)와 표준출력(1)을 재지향 하겠다. 여기서 재지향은 이전에 재지향한 /dev/null 로 설정 된다.'로 볼 수 있다.
이제 전체적으로 풀어보면 아래와 같다.
'매 분마다 실행되는 cron parts의 표준에러, 표준출력을 재지향하여 /dev/null로 보내라.'
댓글목록
등록된 댓글이 없습니다.