cron 또는 logrotate를 사용하여 다수의 동일한 로그 처리

cron 또는 logrotate를 사용하여 다수의 동일한 로그 처리

우리는 서버에 애플리케이션을 배포했으며 특정 상황에서 애플리케이션은 다음 형식으로 일부 로그를 생성합니다.

process_name.hostname.common_text.log.{error/info/warning}.date.time 

이제 이 형식으로 인해 하나의 로그가 아니라 동일한 내용을 포함하는 여러 로그가 있습니다.process_name.hostname.common_text.{오류/정보/경고}일부만, 나머지는 날짜와 시간의 차이로 인해 다릅니다. 그러나 logrotate에 관한 한, 이 모든 것을 별도의 로그로 처리하고 내가 말하면 각 로그의 복사본 1개를 유지합니다.

스핀 1

logrotateconf에서

하지만 제 경우에는 동일한 로그이므로 각 카테고리에서 가장 최근의 1개 로그를 제외하고는 어떤 로그도 유지하고 싶지 않습니다(오류/정보/경고). 나는 무엇을 해야 합니까?

cron에서 매주 실행되는 스크립트를 작성하고 싶습니다. 스크립트는 각 범주(오류/정보/경고) 타임스탬프 사용(ls-ltr) 그런 다음 나머지 로그를 삭제합니다. 하지만 스크립트에 넣으려고 하면 너무 복잡해집니다.

나는 이런 것을 찾고 있습니다.

ls -ltr |grep process_name.hostname.common_text.log.error |head -n -1
ls -ltr |grep process_name.hostname.common_text.log.info |head -n -1
ls -ltr |grep process_name.hostname.common_text.log.warning |head -n -1

위의 3개 명령은 모든 이름을 반환합니다.process_name.hostname.common_text.log.{오류/정보/경고}.date.time로그(가장 최근 로그 제외)

1) 위의 각 명령의 출력을 다음으로 파이프할 수 있습니까?구현하다또는매개변수내가 달릴 수 있도록 같은 줄에무선 주파수반대하다?

2) 더 나은 접근 방식은 무엇입니까? 마찬가지로 process_name에는 2개의 다른 이름이 있으므로 6개 이상의 명령을 실행해야 합니다.

3) 한 줄에 오류, 정보, 경고 등 세 번 grep하는 방법이 있습니까?

답변1

-1ls 대신 사용하면 -l파일 이름만 가져오고 이를 rm에 직접 전달할 수 있습니다. 나는 다음과 같은 것을 사용할 것입니다 :

rm $(ls -1tr process_name.hostname.common_text.log.error* | head -n -1) \
$(ls -1tr process_name.hostname.common_text.log.info* | head -n -1) \
$(ls -1tr process_name.hostname.common_text.log.warning* | head -n -1)

관련 정보