티스토리 뷰
본 포스팅은 OS별 Port Listen 정보로 Process를 찾는 방법에 대해 알아보겠습니다.
간혹 Process를 기동하려다 보면 Binding Exception이 종종 발생하게 됩니다. 이에 오늘은 OS별 Port를 사용하고 있는 Process 찾는 방법을 알아보겠습니다. 죽이는 방법은 알아서~ kill로 죽이세요.
먼저 Windows입니다. netstat -ano 명령어로 확인이 가능합니다.
해당 명령어를 아래와 같이 조합하여 사용중인 Process의 PID를 확인합니다.
Process ID는 4인것을 확인했고 작업 관리자 창에서 해당 Process가 무엇인지 확인해 볼까요?
자 해당 Process는 System Process임을 확인했습니다.
우클릭해서 죽이면 되는데.. System은 죽이면 안되겠죠?
두번째로 LINUX입니다. LINUX는 fuser 명령어를 사용합니다.
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 명령어로 확인 할 수 있겠죠.
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를 점유하고 있음을 알수 있습니다.
죽이는 방법은 알아서 잘 죽이시면 되구요.
세번째로 UNIX 계열 HP-UX입니다. 사실 LINUX역시 사용할 수 있는 명령이인데요. 바로 lsof입니다. (Solaris 제외)
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가 기동되어 있는 것을 확인할 수 있습니다.
그럼 역시 죽이면 되겠네요.
네번째로 UNIX 계열 Solaris입니다. Solaris는 명령어로 Process를 찾는 방법이 없습니다. 이에 아래와 같은 Shell Script로 확인이 필요합니다.
cpu.sh
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
그럼 죽여야죠!
마지막 다섯번째로 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 찾아서 죽이는(??) 방법을 알아봤습니다.
감사합니다.
# 댓글과 추천은 글쓴이에게 힘이됩니다.!
'⑥ 네트워크, 운영체제 > ⓞ OS' 카테고리의 다른 글
[Ubuntu] Default root Passwd 설정 방법 (0) | 2018.08.03 |
---|---|
[Ubuntu] 설치 가이드 by Virtual Box (0) | 2018.08.03 |
[CPU 과점유] AIX 편 (0) | 2018.07.19 |
[CPU 과점유] HP-UX 편 (0) | 2018.07.19 |
[CPU 과점유] SunOS 편 (0) | 2018.07.19 |
- Total
- Today
- Yesterday
- wildfly
- node.js
- Docker
- nodejs
- git
- JBoss
- aws
- openstack tenant
- TA
- MSA
- apache
- aa
- k8s
- SWA
- OpenStack
- 오픈스택
- Da
- 마이크로서비스 아키텍처
- 쿠버네티스
- openstack token issue
- JEUS6
- SA
- jeus
- webtob
- kubernetes
- API Gateway
- JEUS7
- Architecture
- 아키텍처
- 마이크로서비스
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |