로컬 소켓에 연결된 PID를 지속적으로 모니터링하는 방법은 무엇입니까?

로컬 소켓에 연결된 PID를 지속적으로 모니터링하는 방법은 무엇입니까?

일부로컬 프로세스포트 1234에서 127.0.0.1에 연결하고 연결을 끊습니다.

이 포트(또는 서버 프로세스)에 대한 모든 연결을 기록하고 싶습니다.

나는 노력했다

 ss -tpn | grep 1234 

목록이 표시되지만 중지됩니다. 새 연결 기록을 계속하지 않으므로 소켓이나 소유자의 PID를 캡처할 수 없습니다.

연결된 소켓과 연결이 끊긴 소켓의 PID를 검색하는 데 어떤 도구를 사용할 수 있습니까?

답변1

이를 수행할 수 있는 "감시" 도구가 있거나
while true; do sleep 2; clear; ss -tulnp | grep 1234 ; done
파일에 코드를 추가하여 추적할 수 있습니다. 이로 인해 CPU 사용량이 발생할 수 있지만 원하는 것을 찾는 데 도움이 될 수 있습니다.
Linux 모니터링 명령

답변2

connect두 가지 도구를 사용하여 Linux에서 TCP 이벤트를 모니터링할 수 있습니다 .

둘 사이의 차이점은 전자는 출력을 사용자 정의하는 옵션(예: PID 또는 포트 번호 필터링)을 제공하는 반면, 후자는 멋진 옵션을 제공하지 않는 더 간단한 도구라는 것입니다.

사용 사례에서 가장 간단한 옵션은 bcc를 설치하고 다음을 실행하는 것입니다.

tcpconnect.py -P 1234

배포판의 패키지 관리자를 사용하여 이러한 도구를 설치하는 경우 일부 배포판에서는 해당 도구를 다른 위치 tcpconnect에 배치하지 않는다는 점을 명심하십시오 . 따라서 이러한 파일을 찾을 수 없는 경우 배포판이 해당 파일을 어디에 배치하는지 확인하십시오./usr/bin/usr/share

답변3

ss소켓 통계만 덤프되고 연속 덤프(사용 watch또는 while루프)를 시뮬레이션해야 하는 반면 netstat연속 모드( -c)를 사용하십시오.

netstat -ntcp | grep '  127.0.0.1:1234'

클라이언트 PID만 캡처해야 하는 경우 127... 앞의 두 공백은 오타가 아닙니다.
예제 출력:

$ netstat -ntcp | grep '  127.0.0.1:1234'
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp        0      0 127.0.0.1:50146         127.0.0.1:1234          ESTABLISHED 21274/nc            
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp        0      0 127.0.0.1:50146         127.0.0.1:1234          ESTABLISHED 21274/nc            
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp        0      0 127.0.0.1:50146         127.0.0.1:1234          ESTABLISHED 21274/nc            
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp        0      0 127.0.0.1:35720         127.0.0.1:1234          ESTABLISHED 22655/nc            
tcp        0      0 127.0.0.1:50146         127.0.0.1:1234          ESTABLISHED 21274/nc            
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp        0      0 127.0.0.1:35720         127.0.0.1:1234          ESTABLISHED 22655/nc            
tcp        0      0 127.0.0.1:50146         127.0.0.1:1234          ESTABLISHED 21274/nc

답변4

watch -n 1 -d 'lsof -n -itcp:1234'

로깅이 아닌 강력한 실시간 모니터링과 하이라이트...

$ man watch

  • -n 1 - 1초마다
  • -d - 차이점 강조

$ man lsof

  • -n - IP를 도메인으로 확인하지 않습니다.
  • -itcp:1234 - TCP 포트 1234와의 모든 상호 작용

관련 정보