[Linux] crontab 과 stdout/stderr, 환장의 조합

Woong·2022년 6월 8일
0

OS, Linux

목록 보기
5/14

표준출력와 crontab 의 조합

표준 출력이 있는 레거시 모듈이 있다면...

  • 종종 레거시 시스템에 존재하는 stdout, stderr 이 포함된 모듈

crontab 에 등록되어버리면?

  • crond 에서 실행 후 stdout, stderr 내용이 mail 로 발송된다.
    • 메일 서버 설정했다면 메일 서버로,
    • 설정하지 않았다면 maildrop 파일로
      • /var/spool/postfix/maildrop 등

발생하는 문제

  • mail 폭탄
    • mail 서버에 불필요한 메일이 가득 쌓이거나
    • (주기적으로 정리하지 않을 시) 누적되는 로그로 인한 디스크 용량
  • 대량의 파일 생성으로 인한 불필요 & 과도한 inode 점거
  • -> 이로 인한 각종 side effect

로그 정리

이미 쌓였다면 정리부터.

  • 전체 삭제
    postsuper -d ALL
  • maildrop 등 골라서 삭제
    postsuper -d maildrop

메일 발송 막기

crond의 메일 발송 차단

  • /etc/crontab 파일을 편집
    MAILTO=""

crontab 출력 버리기

  • 레거시라 건드리기 어렵다면 stdout, stderr 를 /dev/null로 버리기
    ... > /dev/null 2>&1

애초에 표준출력은 지양해야한다.

  • 표준출력 스트림은 lock 을 사용하기 때문에 절대 지양해야하는 행위
    • 성능 저하 문제도 있음
    • 애드혹 테스트 중이 아니라면 제발 사용하지 마세요
  • 언어별 logger 를 사용하세요. 제발.
    • Ex. Apache log4j2, python logger, ...
    • 굳이 보고싶다면 개발 환경에서만 logger 의 console 출력 옵션을 On 해서.

0개의 댓글