제육's 휘발성 코딩
article thumbnail
반응형

MAC 특정 포트 프로세스 종료하기

웹 개발하다보면 Web server failed to start. Port 8080 was already in use. 에러를 자주 본다.

특정 포트가 이미 사용 중이므로, 서버를 띄우지 못하는 현상이다.

 

프로세스 번호 (PID) 찾기

lsof -i :8080
  • lsof -i :포트 를 해당 포트에 대한 정보를 알 수 있다.
  • lsof는 list open files의 약자로 시스템에서 열린 파일 목록을 알려주고 프로세스, 디바이스 정보 등의 정보를 출력해준다.

 

image

  • 현재 8080포트로 실행 중인 프로세스가 10519 임을 확인할 수 있다.
  • lsof -i 프로토콜:포트번호를 명시할 수도 있는데, 명시한 경우 해당 프로토콜 관련 포트만 표시해준다.

 

프로세스 종료하기

kill -15 10519
  • 해당 명령어를 통해 프로세스를 종료할 수 있다.
  • -15SIGTERM 시그널(15번 시그널)로 이 시그널을 수신한 프로세스를 종료하는 명령어이다.

 

시그널 목록

1) SIGHUP       2) SIGINT       3) SIGQUIT      4) SIGILL       5) SIGTRAP
6) SIGABRT      7) SIGBUS       8) SIGFPE       9) SIGKILL     10) SIGUSR1
11) SIGSEGV     12) SIGUSR2     13) SIGPIPE     14) SIGALRM     15) SIGTERM
16) SIGSTKFLT   17) SIGCHLD     18) SIGCONT     19) SIGSTOP     20) SIGTSTP
21) SIGTTIN     22) SIGTTOU     23) SIGURG      24) SIGXCPU     25) SIGXFSZ
26) SIGVTALRM   27) SIGPROF     28) SIGWINCH    29) SIGIO       30) SIGPWR
  • kill -9 포트 를 통해 프로세스를 종료하는 경우가 대부분이지만, 추천하지 않는다.
  • 9는 SIGKILL 옵션으로 강제종료하는 시그널이다. 시그널별로 핸들러를 지정할 수 있는데 SIGKILL(9), SIGSTOP(19)핸들러를 등록할 수 없는 시그널이기 때문에, 개발자가 구현한 함수가 호출되지 않고, 프로세스가 즉시 종료되어 데이터 유실이나 리소스 문제를 발생시킬 수 있다.

 

lsof -i :8080
  • 다시 8080포트에 실행 중인 프로세스 정보를 가져오려고하면, 정상 종료되어 출력되는 것이 없는 것을 확인할 수 있다.

 


REFERENCE

https://www.lesstif.com/asystem-admin/unix-linux-kill-12943674.html

반응형
profile

제육's 휘발성 코딩

@sasca37

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요! 맞구독은 언제나 환영입니다^^