침묵의 법칙을 존중하지 않는 사전 패키지 프로그램을 처리하는 방법은 무엇입니까?

침묵의 법칙을 존중하지 않는 사전 패키지 프로그램을 처리하는 방법은 무엇입니까?

특정 문제:

우편 집배원플랫 파일에서 메일링 리스트 구독자를 동기화하는 스크립트가 함께 제공됩니다(동기화 멤버(8)).

대본이 잘 지켜지지 않네요침묵의 법칙. 예를 들어, 할 일이 없을 때(예: 현재 구독자와 플랫 파일이 동일한 경우) "Nothing to do"를 인쇄합니다. 도착하다 stdout.

이 프로그램을 몇 분마다 실행하면 모든 출력이 로그 서버에 기록됩니다(시스템 로그) 그런 다음 매일 로그가 포함된 이메일을 보내는데, 여기에는 종종 쓸모없는 메시지가 많이 포함되어 있습니다.

이 문제를 해결하는 방법에는 여러 가지가 있으며 어떤 방법이 가장 적합한지 알고 싶습니다.

  1. stdout에 파이프를 연결합니다 /dev/null.
  2. 사용rsyslogd 필터링특히 이러한 메시지를 필터링합니다.
  3. sync_members침묵의 법칙을 따르 도록 소스 코드를 수정하세요 .
  4. 소스 코드를 복사하고 sync_members, 사본을 수정하고, 지금부터 그 사본을 사용하세요.

각 방법은 원하는 결과를 달성하지만 각 방법에는 단점이 있습니다.

  1. 어느 시점에 흥미로운 일이 발생하면 어떻게 되나요 stdout?
  2. 꽤 그럴 것 같아"깨끗하지 않다"그리고"해커"해결책, 저는 침묵의 법칙을 따르지 않는 프로그램이 많이 있다고 감히 말씀드립니다.
  3. 업데이트가 있으면 어떻게 되나요?
  4. 3과 같습니다.

저는 옵션 2를 선택하고 있지만 시스템에서 오작동하는 모든 프로그램에 대해 이 작업을 수행해야 한다면...

어떻게 생각하나요? 찬성하거나 반대하는 다른 옵션이나 주장이 있습니까? 이 상황에 대한 모범 사례가 있습니까? (이 문제가 새로운 것이 아니라고 감히 말할 수 있습니까?)

답변1

옵션 5가 없습니다. 출력을 리디렉션하는 래퍼 스크립트를 작성하고 sync_members"아무것도 할 일이 없는지" 확인하세요.

적절한 종료 코드 검사를 사용하면 작업이 제대로 수행될 수 있습니다. 상대적으로 업그레이드가 안전합니다. "없음" 메시지가 변경되지 않는 한 스크립트를 유지 관리할 필요가 없습니다.

이 스크립트에서 오류 조건을 처리하는 방법을 결정할 수 있습니다(즉, cat로그 파일을 처리하거나 더 흥미로운 작업을 수행).

답변2

두 가지 제안:

  1. mailman개발자가 모든 사람을 위해 버그를 수정할 수 있도록 버그 보고서를 제출하세요 .

  2. 통화를 That synch_members으로 변경하면 synch_members | egrep -v "Nothing to do.""할 일 없음"이 제거됩니다. 정보.

답변3

"할 일 없음"이 변경되지 않으면(또는 정규 표현식으로 축소될 수 있는 경우) 다음과 같이 grep을 사용할 수 있습니다.

    grep -v "Nothing to do" *.log

문제를 해결하기 위해 지금부터 할 수 있는 일이 많이 있습니다.

  • 위 명령의 출력을 리디렉션하여 새 "자동" 로그를 만듭니다.
  • 위의 명령을 기반으로 함수와 별칭을 정의하여 대화형 세션에서 바로가기로 사용할 수 있습니다(환경 변수로 "아무것도 하지 않음"을 정의할 수도 있음).
  • cron정기적으로 이러한 명령을 자동으로 실행하는 작업을 정의합니다 .

기본 Unix 도구와 최신 셸을 사용하여 할 수 있는 일이 많습니다. 아직 소스코드 수정을 결정하기에는 이르다고 생각합니다. 간단하게 유지하면 많은 시간을 낭비하는 것을 피할 수 있습니다.

관련 정보