티스토리 뷰

728x90
SMALL

  본 포스팅은 OS별 Port Listen 정보로 Process를 찾는 방법에 대해 알아보겠습니다.


간혹 Process를 기동하려다 보면 Binding Exception이 종종 발생하게 됩니다. 이에 오늘은 OS별 Port를 사용하고 있는 Process 찾는 방법을 알아보겠습니다. 죽이는 방법은 알아서~ kill로 죽이세요.

728x90

먼저 Windows입니다. netstat -ano 명령어로 확인이 가능합니다.


해당 명령어를 아래와 같이 조합하여 사용중인 Process의 PID를 확인합니다.

Process ID는 4인것을 확인했고 작업 관리자 창에서 해당 Process가 무엇인지 확인해 볼까요?


자 해당 Process는 System Process임을 확인했습니다.

우클릭해서 죽이면 되는데.. System은 죽이면 안되겠죠?

 

728x90

두번째로 LINUX입니다. LINUX는 fuser 명령어를 사용합니다.

[root@infrasvr ~]# fuser -h

Usage: fuser [ -a | -s | -c ] [ -n SPACE ] [ -SIGNAL ] [ -kimuv ] NAME...

             [ - ] [ -n SPACE ] [ -SIGNAL ] [ -kimuv ] NAME...

       fuser -l

       fuser -V

Show which processes use the named files, sockets, or filesystems.

    -a        display unused files too

    -c        mounted FS

    -f        silently ignored (for POSIX compatibility)

    -i        ask before killing (ignored without -k)

    -k        kill processes accessing the named file

    -l        list available signal names

    -m        show all processes using the named filesystems

    -n SPACE  search in this name space (file, udp, or tcp)

    -s        silent operation

    -SIGNAL   send this signal instead of SIGKILL

    -u        display user IDs

    -v        verbose output

    -V        display version information

    -4        search IPv4 sockets only

    -6        search IPv6 sockets only

    -         reset options

  udp/tcp names: [local_port][,[rmt_host][,[rmt_port]]]

[root@infrasvr ~]# fuser -n tcp 9736

9736/tcp:            18864

[root@infrasvr ~]#

tcp name space 중 9736 port를 사용하고 있는 Process pid는 18864입니다.

이후 잘알고 있는 ps 명령어로 확인 할 수 있겠죠.

[root@infrasvr ~]# ps -ef | grep 18864

narason  18864     1  0 May17 ?        00:39:45 /usr/java/jdk1.7.0_07_x64/bin/java -DadminServer -Xmx1024m -XX:MaxPermSize=128m -server -Xbootclasspath/p:/user/narason/jeus7/lib/system/extension.jar -classpath /user/narason/jeus7/lib/system/bootstrap.jar -XX:LogFile=/user/narason/jeus7/logs/adminServer/jvm.log jeus.server.admin.DomainAdminServerBootstrapper -domain jeus_domain -server adminServer -u administrator

root     27468 27435  0 13:52 pts/4    00:00:00 grep 18864

[root@infrasvr ~]#

확인해 보니 narason 이라는 사용자가 adminServer라는 process를 기동하여 해당 port를 점유하고 있음을 알수 있습니다.

죽이는 방법은 알아서 잘 죽이시면 되구요.

728x90

세번째로 UNIX 계열 HP-UX입니다. 사실 LINUX역시 사용할 수 있는 명령이인데요. 바로 lsof입니다. (Solaris 제외)

[nrson@hptest:/home/nrson]$ lsof | grep 9736 | grep LIST

java      28961 nrson  117u  IPv4 0xe0000001730c2040        0t0    TCP *:9736 (LISTEN)

[nrson@hptest:/home/nrson]$ ps -ef | grep 28961

   nrson 28961     1  0  May 18  ?        46:37 /opt/java_install/java7_09/opt/java7/bin/java -DadminServer -Xmx1024m -XX:MaxPermSize=128m -server -Xbootclasspath/p:/home/nrso

   nrson 13609  9292  0 14:27:59 pts/0     0:00 grep 28961

[nrson@hptest:/home/nrson]$

확인해 보니 ?? 역시 JEUS7 adminServer가 기동되어 있는 것을 확인할 수 있습니다.

그럼 역시 죽이면 되겠네요.

 

728x90

네번째로 UNIX 계열 Solaris입니다. Solaris는 명령어로 Process를 찾는 방법이 없습니다. 이에 아래와 같은 Shell Script로 확인이 필요합니다.

cpu.sh

#!/usr/bin/bash

port=$1

for proc in `ptree -a | grep -v ptree | awk '{print $1};'`

do

        result=`pfiles $proc 2> /dev/null| grep "port: $port"`

        if [ ! -z "$result" ]

        then

                program=`ps -fo comm -p $proc | /usr/bin/tail -1`

                ps -ef | grep  $proc | grep -v grep

        fi

done

드디어 Solaris도 찾았습니다.

root@suntest:/home/nrson> sh cpu.sh 9736

   nrson 10876     1   0 13:07:30 pts/21      4:32 /usr/jdk1.7.0_10/bin/java -DadminServer -Xmx1024m -XX:MaxPermSize=128m -server 

root@suntest:/home/nrson>

그럼 죽여야죠!

 

728x90

마지막 다섯번째로 AIX입니다. aix의 경우 마찬가지로 lsof로 동일하게 찾을 수 있습니다.

[nrson@ibmtest:/home/nrson]$ lsof -i TCP:9736 | grep LIST

COMMAND      PID  USER   FD   TYPE             DEVICE  SIZE/OFF NODE NAME
java    10203200 nrson  192u  IPv4 0xf100060003b17398       0t0  TCP *:9736 (LISTEN)
[nrson@ibmtest:/home/nrson]$

간단하죠?

찾은 Process 10203200을 ps로 확인해 보면 다음과 같습니다.

[nrson@ibmtest:/home/nrson]$ ps -ef | grep 10203200

   nrson 10203200        1   0 15:04:50      -  9:58 /usr/java6_64//bin/java -DadminServer -Xmx1024m -XX:MaxPermSize=128m -Xbootclasspath/p:/home/nrson/jeus7/lib/system/extension.jar -classpath /home/nrson/jeus7/lib/system/bootstrap.jar -Djava.security.policy=/home/nrson/jeus7/domains/jeus_domain/config/security/policy -Djava.library.path=/home/nrson/jeus7/lib/system -Djava.endorsed.dirs=/home/nrson/jeus7/lib/endorsed -Djava.util.logging.config.file=/home/nrson/jeus7/bin/logging.properties -Djeus.dispatcher.blocking=true -Djeus.home=/home/nrson/jeus7 -Djava.util.logging.manager=jeus.util.logging.JeusLogManager -Djava.net.preferIPv4Stack=true -Djava.util.prefs.PreferencesFactory=java.util.prefs.FileSystemPreferencesFactory -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000 -Djeus.properties.replicate=jeus,sun.rmi,java.util,java.net -Djeus.tm.checkReg=true -Djeus.tool.webadmin.locale.language=ko -Djeus.jvm.version=old -Djeus.domain.name=jeus_domain -Djava.naming.factory.initial=jeus.jndi.JNSContextFactory -Djava.naming.factory.url.pkgs=jeus.jndi.jns.url -Djeus.server.protectmode=false jeus.server.admin.DomainAdminServerBootstrapper -domain jeus_domain -server adminServer -u administrator

[nrson@ibmtest:/home/nrson]$

또 이놈이네요.

자 오늘은 OS별 PORT로 PROCESS 찾아서 죽이는(??) 방법을 알아봤습니다.

감사합니다.

 

# 댓글과 추천은 글쓴이에게 힘이됩니다.!

728x90
LIST
댓글
댓글쓰기 폼