당신은 가지고 있습니까?깨끗한Linux 프로세스/서비스가 실행/수신 중인 포트를 확인하는 방법은 무엇입니까?
fuser
, netcat
, lsof
등은 모두 해당 정보를 찾는 방법이지만 동시에 여러 가지 다른 정보를 반환한다는 것을 알고 있습니다 . 예를 들어 netstat -ltnp | grep -w process_name"
성공하지만 반환됩니다.
tcp 0 0 127.0.0.1:1234 0.0.0.0:* LISTEN 4880/process
tcp6 0 0 ::1: :::* LISTEN 4880/process
또한 특정 포트에서 실행 중인 프로세스가 아니라 프로세스가 실행 중인 포트를 원합니다.
magic_command -abcd process_name
포트 번호를 반환합니다. 그렇지 않으면 아무것도 반환되지 않습니다.
추신: 나는 명백한 링크를 확인했습니다.https://ostechnix.com/how-to-find-which-service-is-listening-on-a-pspecial-port/
답변1
lsof
이 목적으로 사용될 수 있습니다. Magic_command는 다음과 같습니다:
sudo lsof -i -P -n | grep LISTEN | grep <your_process_name>
별칭으로 래핑할 수 있습니다.
alias magic="sudo lsof -i -P -n | grep LISTEN | grep "
예제 출력:
$ magic httpd
httpd 9438 apache 3u IPv4 2087313137 0t0 TCP *:80 (LISTEN)
httpd 9438 apache 4u IPv4 2087321333 0t0 TCP *:49383 (LISTEN)
httpd 9438 apache 5u IPv4 2087321335 0t0 TCP *:49384 (LISTEN)
httpd 9438 apache 6u IPv4 2087345343 0t0 TCP *:443 (LISTEN)
httpd 23940 root 3u IPv4 2087313137 0t0 TCP *:80 (LISTEN)
httpd 23940 root 4u IPv4 2087321333 0t0 TCP *:49383 (LISTEN)
httpd 23940 root 5u IPv4 2087321335 0t0 TCP *:49384 (LISTEN)
httpd 23940 root 6u IPv4 2087345343 0t0 TCP *:443 (LISTEN)
포트 이외의 다른 것에 정말로 관심이 없다면 일부 출력 처리는 관련 없는 정보를 차단할 것입니다.
$ magic httpd | awk -F: '{print $2}' | cut -d\ -f1 | sort -un
80
443
49383
49384
답변2
Linux에서는 /proc를 마운트할 때 다음에서 이 정보를 얻을 수 있습니다.
ls -l /proc/<pid>/fd/
(<pid> 프로세스 pid를 입력하세요)