파일 예제 아파치 로그 파일이 있는 경우
타임스탬프 없이 Unix 로그 파일에서 가장 일반적인 오류 메시지를 추출하는 방법
핵심은 가장 일반적인 오류 메시지가 목록 상단에 표시되어야 한다는 것입니다.
답변1
cat /tmp/file
:
ERROR 1 1234
ERROR 2 1234
ERROR 3 1234
ERROR 4 1234
ERROR 4 1234
ERROR 3 1234
ERROR 2 1234
ERROR 5 1234
ERROR 1 1234
ERROR 4 1234
ERROR 1 1234
ERROR 1 1234
ERROR 1 1234
ERROR 3 1234
ERROR 2 1234
ERROR 1 1234
ERROR 4 1234
ERROR 1 1234
ERROR 4 1234
ERROR 1 1234
ERROR 2 1234
grep "ERROR" /tmp/file | sort | uniq -c | sort -r
:
8 ERROR 1 1234
5 ERROR 4 1234
4 ERROR 2 1234
3 ERROR 3 1234
1 ERROR 5 1234
첫 번째 열에는 발견된 각 문자열의 발생 횟수가 표시됩니다.
grep "ERROR" /tmp/file\ # select only ERROR string
| sort\ # order
| uniq -c\ # count duplicate items
| sort -rn # reverse order and use numeric sort
처음 5개의 오류에 대해 추가할 수 있습니다.|head -n5
답변2
고유한 오류가 발생하려면 타임스탬프를 잘라야 한다고 생각합니다.
grep '오류 메시지' /logfiles |cut-d' ' -f6- |sort-nr
답변3
모든 system.log 오류를 특정 순서로 "정렬"하는 데 관심이 있을 수 있습니다.날짜+시간또한?
시도: (날짜 검색에만 해당)
grep -i "Jul 18" /var/log/*.log | sort | uniq -c | sort -n
시도해 보십시오: (특정날짜+시간찾다)
grep -i "Jul 18 16:" /var/log/*.log | sort | uniq -c | sort -n
참고: 특정 날짜의 경우 먼저 cat *.log를 수행한 다음 헤더에 표시되는 내용을 찾으세요. OS에 따라 다를 수 있습니다. 위의 예는 UNIX/MacOS용입니다. 특정 운영 체제의 "cat /var/log/system.log" 헤더에 있는 내용을 기반으로 "Jul 18 16:"을 "수동으로" 편집해야 합니다.
도움이 되었기를 바랍니다!
:)