![로컬 소켓에 연결된 PID를 지속적으로 모니터링하는 방법은 무엇입니까?](https://rvso.com/image/168802/%EB%A1%9C%EC%BB%AC%20%EC%86%8C%EC%BC%93%EC%97%90%20%EC%97%B0%EA%B2%B0%EB%90%9C%20PID%EB%A5%BC%20%EC%A7%80%EC%86%8D%EC%A0%81%EC%9C%BC%EB%A1%9C%20%EB%AA%A8%EB%8B%88%ED%84%B0%EB%A7%81%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
일부로컬 프로세스포트 1234에서 127.0.0.1에 연결 및 연결 해제 중입니다.
이 포트(또는 서버 프로세스)에 대한 모든 연결을 기록하고 싶습니다.
난 노력 했어
ss -tpn | grep 1234
목록이 표시되지만 중지됩니다. 새로운 연결을 계속 기록하지 않으므로 소유자의 소켓이나 PID를 잡을 수 없습니다.
연결 및 연결 해제 소켓의 PID를 검색하는 데 어떤 도구를 사용할 수 있습니까?
답변1
이를 수행하는 "감시" 도구가 있습니다. 또는
while true; do sleep 2; clear; ss -tulnp | grep 1234 ; done
파일에 코드를 추가하고 추적할 수 있습니다. 아마도 CPU 사용량이 발생하지만 원하는 것을 찾는 데 도움이 될 수 있습니다.
리눅스 감시 명령
답변2
connect
Linux에서 TCP 이벤트를 모니터링하는 데 사용할 수 있는 두 가지 도구가 있습니다 .
- tcpconnect.py숨은 참조 도구(pkgs.org,사과)
- tcpconnect.btbpftrace(pkgs.org,사과)
둘 사이의 차이점은 전자는 출력을 사용자 정의하기 위한 옵션(예: 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와 상호 작용합니다.