우분투 시스템에 hadoop을 설치하고 있습니다. 시작하면 포트 9000이 사용 중이라고보고합니다.
나는 사용했다 :
netstat -nlp|grep 9000
그러한 포트가 있는지 확인하고 이것을 얻었습니다.
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN
그러나 프로세스를 유지하는 프로세스의 PID를 어떻게 얻을 수 있습니까?
Linux에서는 원하는 정보를 얻으려면 루트 또는 프로세스 소유자 여야합니다. 따라서 다른 사용자로 실행중인 프로세스의 경우 Sudo
앞에 붙는 것이 가장 필요합니다. 또한 최신 Linux 시스템에서 ss
는 다음을 수행하는 데 사용되는 도구입니다.
$ Sudo ss -lptn 'sport = :80'
State Local Address:Port Peer Address:Port
LISTEN 127.0.0.1:80 *:* users:(("nginx",pid=125004,fd=12))
LISTEN ::1:80 :::* users:(("nginx",pid=125004,fd=11))
현재 사용중인 것과 동일한 호출을 사용할 수도 있지만 Sudo
을 (를) 기억하십시오.
$ Sudo netstat -nlp | grep :80
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 125004/nginx
Lsof를 사용할 수도 있습니다 :
$ Sudo lsof -n -i :80 | grep LISTEN
nginx 125004 nginx 3u IPv4 6645 0t0 TCP 0.0.0.0:80 (LISTEN)
또한 lsof
유틸리티를 사용할 수 있습니다. 루트 여야합니다.
# lsof -i :25
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
exim4 2799 Debian-exim 3u IPv4 6645 0t0 TCP localhost:smtp (LISTEN)
exim4 2799 Debian-exim 4u IPv6 6646 0t0 TCP localhost:smtp (LISTEN)
나는 netstat
도 lsof
도없는 "CentOS 7 minimal"을 사용하고 있습니다. 그러나 많은 Linux 배포판에는 소켓 통계 명령 (예 : ss
)이 있습니다.
실행 예는 다음과 같습니다.
# ss -tanp | grep 6379
LISTEN 0 128 127.0.0.1:6379 *:* users:(("redis-server",pid=2531,fd=4))
Sudo
로 명령을 실행하면 PID
가 표시됩니다. 내 개발 머신에서 다음을 얻습니다.
$ netstat -nlp | grep 8080
tcp6 0 0 :::8080 :::* LISTEN -
$ Sudo netstat -nlp | grep 8080
tcp6 0 0 :::8080 :::* LISTEN 16449/Java
다른 답변에서 언급했듯이 ss
또는 lsof
명령을 사용할 수도 있습니다.
또한 fuser
를 사용할 수 있습니다 :
fuser -v -n tcp 22
출력 :
USER PID ACCESS COMMAND
22/tcp: root 598 F.... sshd