두 cron 리디렉션의 차이점

두 cron 리디렉션의 차이점

다음 두 가지 작동 모드의 차이점은 무엇입니까 cron? 기본적으로 파일에 쓰고 어떤 파일이 선호되거나 올바른지 확인하고 싶습니다.

2 * * * * python script.py >> /tmp/script.log

비교:

2 * * * * python script.py >> /tmp/script.log 2>&1

둘 다 로그에 기록하는 것처럼 보이지만 첫 번째 항목이 더 자주 "플러시"되는 것은 아닐까요?

대부분의 출력은 일반적인 print 문을 통해 수행됩니다.

print('hello')

나는 이것이 sys.stdout매 인쇄 후에 암묵적으로 글을 쓰는 것과 같다고 생각합니다.\n

답변1

첫 번째 리디렉션은 표준 출력만 script.py로그 파일에 추가합니다.

스크립트가 표준 오류 채널(Pythonic: write sys.stderr)에서 메시지를 생성하는 경우 이러한 메시지는 평소와 같이 처리됩니다 cron. 즉, cron 데몬은 해당 메시지를 수집하여 작업이 끝난 후 로컬 메시지로 보내려고 합니다. 크론 작업을 소유한 사용자에게 이메일 메시지를 보냅니다.

일반적으로 이러한 로컬 이메일은 로컬 메일 전송 에이전트(줄여서 MTA)에 의해 처리되며 사용자의 로컬 이메일 받은 편지함 파일(예: )에 저장됩니다 /var/mail/<username>. 그러나 시스템에 로컬 MTA가 설치되어 있지 않으면 이 프로세스가 실패하고 cron 작업 오류 메시지가 손실될 수 있습니다.

시스템에 로컬 시스템 외부로 메일을 보낼 수도 있는 적절하게 구성된 MTA가 있는 경우 이 이메일 전달은 원하는 이메일 주소로 리디렉션될 수 있습니다.


두 번째 리디렉션은 표준 출력과 표준 오류 출력을 로그 파일에 추가합니다. cron 작업이 0이 아닌 결과 코드로 종료되는 경우 cron 데몬은 결과 코드를 작업 소유자에게 보고하기 위해 여전히 작업 소유자에게 로컬 이메일을 보내려고 시도할 수 있습니다.

어느 것이 선호되거나 정확합니까? 이는 스크립트가 수행하는 작업과 스크립트 오류에 대한 즉각적인 알림(이메일을 통해)을 원하는지 여부에 따라 다릅니다.

관련 정보