Linux 에서 파일 을 다시 계산 하고 정렬 합 니 다.
5522 단어 Linux
최근 에 nginx 로그 파일 에 대한 통계 가 필요 합 니 다. 몇 십 개의 파일 에 천만 줄 의 기록 을 더 하면 코드 로 쓰 는 것 은 너무 그 렇 고 메모리 도 차지 하기 때문에 Liux 명령 을 사용 하여 실현 하기 로 결 정 했 습 니 다.
대략 수 요 는 방 문 량 top 100 의 요 구 량 을 통계 하고 이 100 개의 요청 에 대한 평균 응답 시간 입 니 다.
명령 장 에 게 이렇게 쓰 십시오:
cat nginx.log_2017-10-*.bak | awk -F '|' '{print $5}' | grep '?_' | awk -F '?' '{print $1}'| sort| uniq -c | sort -k 1 -nr | head -20
위 에서 명령 에 대해 일일이 분석 해 보 겠 습 니 다.
awk -F '|' '{print ..}'
: 이 명령 은 한 줄 의 데 이 터 를 포맷 하고 나 눌 수 있 습 니 다. 그 자체 가 매우 유연 한 내용 처 리 를 지원 하고 그 자체 의 특성 도 프로 그래 밍 할 수 있 으 며 매우 강력 합 니 다. 여 기 는 한 줄 의 기록 을 '|' 로 나 누 어 다섯 번 째 부분의 내용 을 출력 할 뿐 입 니 다.sort
: 기본 값 으로 ASCII 에 따라 정렬 합 니 다 uniq -c
: 인접 한 중복 기록 을 합병 하고 중복 수 를 통계 한 다 는 뜻 이다.유 닉 스 - c 는 인접 한 기록 만 합 칠 수 있 기 때문에 이 명령 을 사용 하기 전에 정렬 sort -k 1 -nr
: 유 니 크 - c 처 리 를 거 친 데이터 형식 은 '2 data' 와 같 고 첫 번 째 필드 는 숫자 로 중복 되 는 기록 수 를 나타 낸다.두 번 째 필드 는 기 록 된 내용 입 니 다.우 리 는 이 내용 을 정렬 할 것 이다.sort - k 1 은 각 줄 의 첫 번 째 필드 를 정렬 하 는 것 을 표시 합 니 다. 중복 기록 수 를 나타 내 는 필드 를 말 합 니 다.sort 명령 의 기본 정렬 은 ASCII 에 따 르 기 때문에 큰 것 부터 작은 것 까지 정렬 할 때 수치 2 는 수치 11 의 앞 에 있 기 때문에 - n 매개 변 수 를 사용 하여 sort 명령 을 수치 크기 에 따라 정렬 해 야 합 니 다. -r 는 역순 을 나타 낸다. 즉, 큰 것 에서 작은 것 으로 정렬 하 는 것 이다 head -20
: 순 서 를 배열 하고 20 행 실천 2
JVM 을 조정 할 때 GC 로 그 를 분석 하 는데 CMS + UseParNewGC 회수 기 를 사용 하여 생 성 된 로그 에서 평균 YGC 의 시간 을 분석 해 야 합 니 다.YGC 로그 한 줄 은 다음 과 같 습 니 다:
572.219: [GC (Allocation Failure) 572.219: [ParNew: 420082K->700K(471872K), 0.0081741 secs] 498361K->78979K(2044736K), 0.0082966 secs] [Times: user=0.02 sys=0.01, real=0.01 secs]
평균 시간 을 계산 하 는데, 나 는 여기에 두 가지 명령 을 썼 는데, 하 나 는 총 수 를 구하 고, 하 나 는 총 시간 을 구 했다.
>> cat gc.log | grep 'Allocation' | awk -F ',' '{print $2}' | wc -l #
200
>> cat gc.log | grep 'Allocation' | awk -F ',' '{print $2}' | awk -F 'secs' '{a+=$1}END{print a}' #
1.53131
평균 값 을 수 동 으로 계산 해 보 았 다.사실 한 줄 의 명령 으로 평균 값 을 계산 할 수도 있다.
>> cat gc.log | grep 'Allocation' | awk -F ',' '{print $2}' | awk -F 'secs' '{a+=$1}END{print a/NR}'
Liux 명령 은 매우 강력 합 니 다. 때로는 한꺼번에 파일 처 리 를 할 때 명령 처 리 를 우선 고려 할 수 있 습 니 다.
참고 글:
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
바이너리 파일cat 또는tail, 터미널 디코딩 시 처리 방법cat으로 바이너리 파일을 보려고 할 때 코드가 엉망이 되어 식은땀이 났다. 웹에서 스크롤된 정보의 처리 방법과alias의 설정을 요약합니다. reset 명령을 사용하여 터미널을 재설정합니다.이렇게 하면 고치지 못하...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.