/var/opt/log_loc1, /var/opt/log_loc2, /var/opt/log_loc3의 다양한 cron 작업에서 생성된 많은 로그가 있습니다. 각 로그를 보는 대신 오류 메시지가 포함된 모든 로그로 새 로그 파일을 채우도록 cron 작업을 예약하는 방법이 있습니까?
기본적으로 "all_logs_%Y_%m_%d"라는 이름의 새 로그 파일을 모든 로그 이름과 오류로 채우고 싶습니다. 매일 새로운 all_logs_%Y_%m_%d가 있습니다.
예: 이것은 /var/opt/log_loc1에 있는 내 로그 파일 목록입니다.
- InsertSales_2019_08_19.log
- PurgeHistory_2019_08_19.log
- 11_2019_08_19.log 가져오기
- ImportSales_2019_08_19.log
- 22_2019_08_20.log 가져오기
- 33_2019_08_20.log 가져오기
- InsertSales_2019_08_20.log
- PurgeHistory_2019_08_20.log
- 11_2019_08_20.log 가져오기
- ImportSales_2019_08_20.log
- 22_2019_08_21.log 가져오기
- 33_2019_08_21.log 가져오기
- InsertSales_2019_08_21.log
- PurgeHistory_2019_08_21.log
*질문이 불완전했다면 사과드립니다.
답변1
어때요 find
? , 제가 생각할 수 있는 가장 쉬운 방법은 이것을 사용하는 것입니다. 어쩌면 약간 조잡할 수도 있지만 작업을 완료해야 합니다.
find /var/opt/ -type f -name "*.log" -exec grep -iH 'err\|warn\|fail\|whatever' {} >> total.log \;
모든 로그 파일(모든 날짜의)만 필터링할지 아니면 오늘부터만 필터링할지 확실하지 않습니다. 날짜를 필터링해야 하는 경우 옵션을 사용하거나 -mtime
필터링 옵션만 find
"트릭"을 사용할 수 있습니다( -name
예: 어제의). 로그
find /var/opt/ -type f -name "*_`date --date yesterday '+%Y_%m_%d'`.log" -exec grep -iH 'err\|warn\|fail\|whatever' {} >> total.log \;
이것이 도움이 될지 확실하지 않습니다... 불분명한 또 다른 점은 로그 파일에 어떤 종류의 구문이 있습니까? 알파벳순이나 숫자순으로 검색할 수 없기 때문에 find
결국 지저분한 파일이 됩니다. 일반적으로(그리고 교리여야 함) 로그는 %Y%m%d_%H:%M 또는 이와 유사한 것으로 시작합니다. 이 경우 다음과 같이 sort
출력 할 수 있습니다.find
find /var/opt/ -type f -name "*.log" -exec grep -iH 'err\|warn\|fail\|whatever' {} \; sort -no total.log
이 방법을 시도해 보았는데 /var/log
효과가 있을 것 같지만 앞서 말했듯이 이는 조잡한 방법입니다.
도움이 되었기를 바랍니다.
find
, 및 페이지에서 sort
사용한 옵션에 대한 자세한 내용을 확인할 수 있습니다.grep
man