현재 리눅스 환경에 구동중인 프로세서(process), 서비스를 확인하는 방법을 알아봅니다. 각 프로세서의 ip주소와 포트, PID 등을 확인할 수 있습니다.



! 리눅스, netstat를 사용하는 방법
netstat은 현재 구동중인 모든 프로세스, 네트워크를 확인할 수 있는 명령어입니다.


netstat


이를 사용하면 현재 서비스가 가능한 프로토콜 및 ip, 포트(port), PID 등의 정보를 가져올 수 있습니다. 함께 사용하는 옵션은 아래와 같습니다.

n // 주소, 포트를 숫자로 변경하여 출력함
l // Listening 중인 소켓만 출력
p // pid/program 이름을 출력함
a // 모든 소켓을 출력함
t // tcp
u // udp
x // unix
c // 계속해서 네트워크 상태 출력하기

위 옵션 중 가장 많이 사용되는 옵션은? 바로 p와 n입니다. 특히 n은 주소, 포트를 숫자로 출력해주므로 대부분의 명령어에 포함되는 옵션입니다.

이제 아래에서는 위 옵션을 사용하여 네트워크/프로세서를 찾는 몇 가지 방법을 알아봅니다.


@ established만 보기
netstat -natup | grep 'ESTABLISHED'


@ listening만 보기
netstat -anp | grep 'LISTEN'


@ pid가 어떤 포트 사용하는 지 확인하기
netstat -anlp | grep 49494


@ Listening 중인 네트워크, 프로세서만 보기
만약 현재 Listening인 네트워크, 프로세서를 보려면 아래의 명령어를 입력합니다.
netstat -plt

위와 같이 입력하면 아래처럼 결과가 출력됩니다.
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name
tcp        0      0 :::3306                     :::*                        LISTEN      -
tcp        0      0 :::443                      :::*                        LISTEN      -
tcp        0      0 :::80                       :::*                        LISTEN      -
tcp        0      0 :::22                       :::*                        LISTEN      -

이처럼 간단하게 서비스 항목을 얻을 수 있으며 위 결과에서 알 수 있는 정보는 내부에 3306 443, 80, 22 포트를 사용하여 서비스가 구동중인 것을 알 수 있습니다. 이를 사용하면 특정 서비스의 포트 번호를 확인하는 용도로도 사용할 수 있습니다.