특정 문제:
우편 집배원플랫 파일에서 메일링 리스트 구독자를 동기화하는 스크립트가 함께 제공됩니다(동기화 멤버(8)).
대본이 잘 지켜지지 않네요침묵의 법칙. 예를 들어, 할 일이 없을 때(예: 현재 구독자와 플랫 파일이 동일한 경우) "Nothing to do"를 인쇄합니다. 도착하다 stdout
.
이 프로그램을 몇 분마다 실행하면 모든 출력이 로그 서버에 기록됩니다(시스템 로그) 그런 다음 매일 로그가 포함된 이메일을 보내는데, 여기에는 종종 쓸모없는 메시지가 많이 포함되어 있습니다.
이 문제를 해결하는 방법에는 여러 가지가 있으며 어떤 방법이 가장 적합한지 알고 싶습니다.
stdout
에 파이프를 연결합니다/dev/null
.- 사용rsyslogd 필터링특히 이러한 메시지를 필터링합니다.
sync_members
침묵의 법칙을 따르 도록 소스 코드를 수정하세요 .- 소스 코드를 복사하고
sync_members
, 사본을 수정하고, 지금부터 그 사본을 사용하세요.
각 방법은 원하는 결과를 달성하지만 각 방법에는 단점이 있습니다.
- 어느 시점에 흥미로운 일이 발생하면 어떻게 되나요
stdout
? - 꽤 그럴 것 같아"깨끗하지 않다"그리고"해커"해결책, 저는 침묵의 법칙을 따르지 않는 프로그램이 많이 있다고 감히 말씀드립니다.
- 업데이트가 있으면 어떻게 되나요?
- 3과 같습니다.
저는 옵션 2를 선택하고 있지만 시스템에서 오작동하는 모든 프로그램에 대해 이 작업을 수행해야 한다면...
어떻게 생각하나요? 찬성하거나 반대하는 다른 옵션이나 주장이 있습니까? 이 상황에 대한 모범 사례가 있습니까? (이 문제가 새로운 것이 아니라고 감히 말할 수 있습니까?)
답변1
옵션 5가 없습니다. 출력을 리디렉션하는 래퍼 스크립트를 작성하고 sync_members
"아무것도 할 일이 없는지" 확인하세요.
적절한 종료 코드 검사를 사용하면 작업이 제대로 수행될 수 있습니다. 상대적으로 업그레이드가 안전합니다. "없음" 메시지가 변경되지 않는 한 스크립트를 유지 관리할 필요가 없습니다.
이 스크립트에서 오류 조건을 처리하는 방법을 결정할 수 있습니다(즉, cat
로그 파일을 처리하거나 더 흥미로운 작업을 수행).
답변2
두 가지 제안:
mailman
개발자가 모든 사람을 위해 버그를 수정할 수 있도록 버그 보고서를 제출하세요 .통화를 That
synch_members
으로 변경하면synch_members | egrep -v "Nothing to do."
"할 일 없음"이 제거됩니다. 정보.
답변3
"할 일 없음"이 변경되지 않으면(또는 정규 표현식으로 축소될 수 있는 경우) 다음과 같이 grep을 사용할 수 있습니다.
grep -v "Nothing to do" *.log
문제를 해결하기 위해 지금부터 할 수 있는 일이 많이 있습니다.
- 위 명령의 출력을 리디렉션하여 새 "자동" 로그를 만듭니다.
- 위의 명령을 기반으로 함수와 별칭을 정의하여 대화형 세션에서 바로가기로 사용할 수 있습니다(환경 변수로 "아무것도 하지 않음"을 정의할 수도 있음).
cron
정기적으로 이러한 명령을 자동으로 실행하는 작업을 정의합니다 .
기본 Unix 도구와 최신 셸을 사용하여 할 수 있는 일이 많습니다. 아직 소스코드 수정을 결정하기에는 이르다고 생각합니다. 간단하게 유지하면 많은 시간을 낭비하는 것을 피할 수 있습니다.