sudo없이 포트를 사용하여 프로세스 결정 않은 것입니다. 이 작업을 수행하려는 프로세스는

주어진 포트를 사용하는 프로세스 (특히 프로세스 ID)를 찾고 싶습니다. 한 가지 발견은 sudo를 사용하고 싶지 않으며 루트로 로그인하지 않은 것입니다. 이 작업을 수행하려는 프로세스는 프로세스 ID를 찾으려는 동일한 사용자가 실행하므로 이것이 간단하다고 생각했을 것입니다.

모두 lsofnetstat내가 sudo는을 사용하여 실행하지 않으면 나에게 프로세스 ID를 말하지 않을 것이다 – 그들은 포트가 있지만 사용되고 있음을 말해 것입니다.

일부 추가 컨텍스트-SSH를 통해 관리하는 서버에 연결하고 역방향 포트 전달을 만드는 다양한 앱이 있습니다. 일단 설정되면 내 서버는 전달 포트를 사용하여 일부 처리를 수행 한 다음 연결을 끊을 수 있습니다. 특정 포트 (각 앱마다 고유 한 포트)를 프로세스에 매핑 할 수 있다면 이것은 간단한 스크립트입니다. 어떤 제안?

그건 그렇고 우분투 상자에 있지만 대부분의 Linux 배포판에서 모든 솔루션이 표준으로 추측됩니다.



답변

--programNETSTAT 쇼 당신의 PID와 자신의 프로세스의 이름에 대한 옵션을 선택합니다. 이 옵션은 net-tools 1.60 중 netstat 1.42의 RHEL 6에서 작동 중입니다.

netstat -an --tcp --program내 프로세스의 PID 를 보여줍니다.


답변

Pawel의 제안은 나에게 잘 작동하는 것 같지만 대안으로 shell1에서 듣는 것이 있습니다.

[madhatta@risby ~]$ nc -l  localhost 3456

그리고 여기 lsofshell2에서 그것을 보았습니다 .

[madhatta@risby tmp]$ lsof -i tcp:3456
COMMAND   PID     USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
nc      18109 madhatta    3u  IPv4 69205153      0t0  TCP localhost.localdomain:vat (LISTEN)

편집 : 당신은 의견을 작성

SSH 전달은 다르게 작동해야합니다. 프로세스가 동일한 사용자가 소유하더라도 루트 / 스도 도로 실행하지 않으면 lsof 출력에 전혀 표시되지 않습니다.

그러나 이것은 나에게는 그렇지 않습니다. ssh를 사용하여 로컬 포트 ​​8001을 전달
ssh vpn.example.com -L 8001:rt.int:80하면 다음을 찾습니다.

[madhatta@risby ~]$ lsof -n -i tcp:8001
COMMAND  PID     USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
ssh     5375 madhatta    8u  IPv6 381234      0t0  TCP [::1]:vcom-tunnel (LISTEN)
ssh     5375 madhatta    9u  IPv4 381235      0t0  TCP 127.0.0.1:vcom-tunnel (LISTEN)

샘플 출력 중 일부를 보여 주시겠습니까? 너무 많이 수정하지 않았습니까?


답변