cron에 로깅에 MTA가 필요한 이유는 무엇입니까?


11

cron에 로깅에 MTA가 필요한 이유는 무엇입니까? 이것에 특별한 이점이 있습니까? 다른 대부분의 유틸리티와 같이 로그 파일을 만들 수없는 이유는 무엇입니까?


약간의 독창적이지만 cron에는 MTA가 필요하지 않습니다. cron 메일을 다른 호스트로 발송하지 않는 한 MDA (메일 배달 에이전트) 만 있으면 됩니다.
CVn

답변:


19

데이터를 기록하는 전통적인 "표준"방식은 syslog 이며 메시지에 포함 된 메타 데이터는 "기능 코드"및 우선 순위 수준입니다. 기능 코드는 다른 서비스와 로그 스트림을 분리하여 다른 로그 파일 등으로 분할 될 수 있도록 사용할 수 있습니다 (시설 코드는 전통적인 의미를 가지고있어 다소 제한적 임에도 불구하고).

syslog에없는 것은 다른 사용자와 메시지를 구분하는 방법이며 cron기존의 다중 사용자 시스템에 필요한 것입니다 . 모든 사용자의 cron 작업에서 시스템 관리자 만 볼 수있는 공통 로그 파일로 메시지를 수집하는 것은 아무 소용이 없습니다. 반면에 전자 메일은 다른 사용자에게 메시지를 보낼 수있는 기능을 제공하므로 논리적으로 선택해야합니다. 대안은 cron이 수동으로 작업을 수행하고 각 사용자의 홈 디렉토리에 로그 파일을 작성하는 것이지만 기존의 다중 사용자 유닉스 시스템은 작동하는 MTA를 가진 것으로 가정하므로 cron에서 구현하는 것은 대부분 헛된 운동.

현대 시스템에서는 물론 다른 선택이있을 수 있습니다.


13

"로그"한다는 것은 실제 작업 출력을 저장하는 것을 의미한다고 가정합니다. 실행중인 작업이 이미 크론 로그에 기록된다 /var/cron/log(경로는 시스템마다 다를 수있다). 이 로그에는 MTA가 필요하지 않습니다.

cron 작업은 crontab 작업이 속한 사용자로 실행됩니다.

일반적으로이 사용자가 시스템에서 파일을 만들 수 있다는 보장은 없습니다 (사용자는 대화 형 사용자가 아닐 수 있음). 특히 /var로그가 일반적으로 생성 되는 계층 구조에서는 그렇지 않습니다 . 따라서 사용자에게 오류 및 기타 작업 결과를 알리는 가장 안전한 방법은 오류를 수집하여 전자 메일로 사용자에게 보내는 것입니다. 이를 통해 사용자는 계정이 원하는 위치의 오류를 볼 수 있도록 이메일 리디렉션을 설정할 수 있습니다.

사용자가 작업 출력을 파일로 저장하려면 crontab에서 간단한 리디렉션을 사용하여 수행 할 수 있습니다.

0 */2 * * * "$HOME/scripts/myscript" >"$HOME/logs/myscript.log" 2>&1

이것은 "$HOME/scripts/myscript"매시간마다 매시간 실행 되며 모든 출력을에 저장 합니다"$HOME/logs/myscript.log" . 모든 출력이 경로 재 지정되므로이 작업을 실행하여 이메일이 작성되지 않습니다. 이 없으면 2>&1오류 메시지는 여전히 이메일로 전송됩니다.

이를 통해 사용자는 출력 위치를 선택할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.