Linux/명령어 (command)

netstat , lsof (port확인)

이주성 2021. 1. 6. 18:16
netstat

Table Of Contents

  1. netstat
  2. lsof (MAC)

netstat

현재 사용하고 있는 TCP 포트를 조회하는 리눅스 명령어는 netstat 입니다. netstat명령어로 TCP통신을 진행중인 서비스의 연결상태를 확인가능 하다.

$ netstat -tnl

위 명령어를 실행결과는 아래와 같다. 옵션 t 는 TCP, n 은 10진수(Numeric), l 은 Listening을 의미한다.

$ netstat -tnl 
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address   Foreign Address    State
tcp        0      0 0.0.0.0:111     0.0.0.0:*          LISTEN
tcp        0      0 0.0.0.0:22      0.0.0.0:*          LISTEN
tcp        0      0 127.0.0.1:25    0.0.0.0:*          LISTEN
tcp        0      0 0.0.0.0:5666    0.0.0.0:*          LISTEN
tcp6       0      0 :::9096         :::*               LISTEN
tcp6       0      0 :::9092         :::*               LISTEN
tcp6       0      0 :::9093         :::*               LISTEN

Listening 말고, All state를 보려면 tna 를 쓰면된다. 아래 ESTABLISHED를 보면, 이 VM은 Kafka(9092포트) 1.21.91.4, 1.21.91.5, 1.21.91.5 서버와 연결(ESTABLISHED) 되어 있다는것을 알수 있다. 추가로 Elasticsearch(9200포트) 1.26.69.8 서버와 연결되어 있다. tna 옵션은 외부 서버와 어떻게 연결되었는지를 보는데 쓰인다.

$ netstat -tna 
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address   Foreign Address    State
tcp        0      0 127.0.0.1:44636      1.21.91.4:9092       ESTABLISHED
tcp        0      0 127.0.0.1:47164      1.21.91.5:9092       ESTABLISHED
tcp        0      0 127.0.0.1:49802      1.21.91.6:9092       ESTABLISHED
tcp        0      0 127.0.0.1:52998      1.26.69.8:9200       ESTABLISHED
tcp6       0      0 :::111                  :::*                    LISTEN

만약 현재 포트를 사용하고 있는 프로세스 정보 도 함께 보고 싶으면 아래와 같이 실행한다.

$ netstat -tnlp

옵션 p 는 Programs을 의미한다. 아래 결과를 보면, PID와 프로그램 이름을 보여준다.

Proto Recv-Q Send-Q Local Address   Foreign Address   State   PID/Program name
tcp        0      0 0.0.0.0:111     0.0.0.0:*         LISTEN      -
tcp        0      0 0.0.0.0:22      0.0.0.0:*         LISTEN      -
tcp        0      0 127.0.0.1:25    0.0.0.0:*         LISTEN      -
tcp        0      0 0.0.0.0:5666    0.0.0.0:*         LISTEN      -
tcp6       0      0 :::9096         :::*              LISTEN  123/java
tcp6       0      0 :::9092         :::*              LISTEN  123/java
tcp6       0      0 :::9093         :::*              LISTEN  123/java

PID 를 가지고 더 자세한 Program 정보도 알수 있다.

ps -aux | grep 123 # PID
manager  16766 12.2  9.3 17720328 1140776 ?    Sl    2020 8790:18 java -Xmx1G -Xms1G -server -XX:+UseG1GC -XX:MaxGCPauseMillis=20 -

lsof (MAC)

MAC에도 netstat가 있지만, 맥환경에서는 포트확인이 힘들다. 그래서 보통 lsof 명령어를 많이 쓴다. sudo 를 쓰면 root권한 port도 보인다.

$ sudo lsof -PiTCP -sTCP:LISTEN
COMMAND     PID       USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
launchd       1       root    7u  IPv6 0xcfbef755f6f4f325      0t0  TCP *:22 (LISTEN)
launchd       1       root    8u  IPv4 0xcfbef755f6f57755      0t0  TCP *:22 (LISTEN)
launchd       1       root   10u  IPv6 0xcfbef755f6f4f325      0t0  TCP *:22 (LISTEN)
launchd       1       root   11u  IPv4 0xcfbef755f6f57755      0t0  TCP *:22 (LISTEN)
UserEvent   111       root   69u  IPv6 0xcfbef755f6f50585      0t0  TCP [fe80:4::aede:48ff:fe00:1122]:49153 (LISTEN)