나는 파일의 응답 시간을 계산하고 싶습니다. 응답 시간은 소스 (A)에 의한 패킷 전송과 소스 (A)에 의한 목적지 (B)에서 수신 된 ack 사이의 시간입니다. awk를 사용하면 응답 시간을 추출 할 수 있습니다. 그러나, 나는 논리를 적용하는 방법에 약간 혼란스러워합니다. 추적 파일의 일부 아래 :awk로 파일에서 시간을 계산하십시오.
+ 0.1 6 0 tcp 40 ------- 1 6.0 2.0 0 0
- 0.1 6 0 tcp 40 ------- 1 6.0 2.0 0 0
+ 0.101172 6 0 tcp 40 ------- 1 6.1 2.1 0 1
- 0.102032 0 1 tcp 40 ------- 1 6.0 2.0 0 0
+ 0.102394 6 0 tcp 40 ------- 1 6.2 2.2 0 2
.......
.....
+ 0.112517 6 0 tcp 40 ------- 1 6.6 2.6 0 6
+ 0.122096 1 2 tcp 40 ------- 1 6.0 2.0 0 0
.....
r 0.148256 0 6 ack 40 ------- 1 2.0 6.0 0 7
r 0.149428 0 6 ack 40 ------- 1 2.1 6.1 0 8
...
이 예에서 나는 소스 (6)과 대상 (2) 사이의 통신에 초점을 맞출 것이다. 따라서 응답 시간은 (0.148256 - 0.1)입니다.
r 0.148256 0 6 ack 40 ------- 1 2.0 6.0 0 7
이 줄 소스 6 포트 2 포트 0 ($ 9)로부터 ACK 인 응답은 0 ($ 10), 수신되는 것을 나타내지 만 예에서 첫 번째 행 :
+ 0.1 6 0 tcp 40 ------- 1 6.0 2.0 0 0
소스 (6) 포트 0 ($ 9)에서 목적지 (2) 포트 0 ($ 10)으로 요청이 표시됩니다. 전체 추적 파일의 대상은 항상 (2)이며, 다음과 같이 생각합니다. 참고 : 포트 번호 ($ 9 또는 $ 10의 일부)가 변경 될 때마다 이는 새 요청 연결을 의미합니다.
은 시작 요청의 시간을 기록합니다 :$1 == "+" && $5 == "tcp" && $6 == 40 && $10== 2.port && $9==source.port) {
print $2; // would be the start
}
응답을 수신 시간을 기록하기를,
1) 흐름 아이디, 즉 흐름 (1)에 따라 :
$1 == "r" && $5 == "ack" && $6 == 40 && $9== 2.port && $10==source.port) {
print $2; // would be the end
}
예상 출력은 하나 개의 컬럼으로 두 가지 방법이 될 수
source: 6.0 - 2.0 ---> response time: 0.148256 - 0.1
source: 6.1 - 2.1 ---> response time : end-start
source: any source.port-2.port --> response time : end-start
내 문제는 내가 방법을 잘 모르겠어요 코드를 자동화하여 전체 추적 파일을 검토하고 응답 시간 값을 저장할 수 있습니다. 결국 그래프 응답 시간을 원합니다. 어떤 제안? 다른 스크립팅 언어에 신경 쓰지 마라!
"위의 샘플 입력을 기반으로하는 필수 출력"섹션을 추가하고 명시 적으로 레이블을 지정하여 좋은 질문을 만들 수 있습니다. '# skip'과 같이 후행 주석을 사용하여 건너 뛸 것으로 예상되는 입력 행에 태그를 추가 할 수도 있습니다. 행운을 빕니다! – shellter
힌트를 보내 주셔서 감사합니다. 업데이트를 확인하십시오! – SimpleNEasy
죄송합니다. 샘플 출력으로 얻지는 못합니다. 이러한 리터럴 문자열을 원하면'print "응답 시간을 \ n ------------------- \ n 값"'으로 지정하십시오. 행운을 빕니다. – shellter