Mac에서 IntelliJ를 사용하며 Spring 프로젝트를 실행시키는 경우에 종종 프로세스가 정상적으로 종료가 안되어 8080 포트가 계속 사용되면서 재실행이 안되는 경우가 발생한다.
그렇다고 이러한 경우가 매우 자주 발생하는 것은 아니다 보니 8080 포트를 사용 중인 프로세스를 찾아서 죽이는 방법을 까먹게 되더라..
그때마다 다시 찾아서 사용하기가 불편해서 그냥 스크립트로 만들어서 쓰기로..
그렇게 만든 스크립트를 만든 김에 공유하고자 블로그에 남겨둡니다.
쉘 스크립트 코드
더보기
#!/bin/sh
PORT=$1
if [ -z "$PORT" ]; then
PORT=8080
fi
echo "Port : $PORT"
if [[ "$PORT" = *[a-zA-Z]* ]]; then
echo "Port is only number support"
exit 1
fi
echo "Checking processor...\n"
lsof -i tcp:$PORT
if [ $? -eq 1 ]; then
echo "Not found processor"
exit 0
fi
echo "\nKill processor..."
kill $(lsof -t -i:$PORT)
sleep 1
echo "\nChecking processor after killing..."
lsof -i tcp:$PORT
if [ $? -eq 1 ]; then
echo "Processor killing success!!!"
else
echo "Sorry, processor killing fail"
fi
해당 스크립트의 동작 쉘을 "/bin/sh"로 잡아두었기 때문에 Linux 계열에서는 정상적으로 동작될 거라고 예상합니다. (안될 지도..)
텍스트 편집기(nano, vim, ...)를 통해 위 코드를 저장 후 "chmod 755 저장한_파일명" 명령으로 실행 가능하도록 변경 후 사용하시면 됩니다. 실행은 "./저장한_파일명"으로 실행합니다. (chmod 명령을 사용하지 않았더라면 권한 문제로 실행 불가)
해당 스크립트는 기본적으로 8080 포트를 사용하는 프로세스를 죽입니다.
혹시나 다른 포트를 사용하고 있는 프로세스를 죽이고 싶다면 "./저장한_파일명 포트"로 실행시키면 됩니다.
아래는 직접 사용한 예입니다.
# 해당 포트를 사용 중인 프로세스가 없는 경우
$ ./kill_processor.sh
Port : 8080
Checking processor...
Not found processor
# 해당 포트를 사용 중인 프로세스가 있는 경우
$ ./kill_processor.sh
Port : 8080
Checking processor...
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
java 4016 ******* 54u IPv6 0xbf3480b87f20433b 0t0 TCP *:http-alt (LISTEN)
Kill processor...
Checking processor after killing...
Processor killing success!!!
# 다른 포트를 사용 중인 프로세스를 죽이고자 하는 경우
./kill_processor_8080_port.sh 4040
Port : 4040
Checking processor...
Not found processor