[Linux] kill / kill -9

개구링·2021년 4월 27일

WAS로 톰캣을 쓰면서 8080 포트 충돌이 발생한 적이 있다.
'포트 죽이기'로 구글링 하면 가장 흔히 볼 수 있는 것이 kill -9 {PID} 였다.

👀 kill 과 kill -9는 무슨 차이일까?


단순히 프로세스 종료 명령어로만 알고 있었지만 둘 사이에는 중요한 차이점이 있었다.


1. 정상 종료

kill {PID} = kill -TERM {PID} = kill -15 {PID}

  • kill 명령어는 프로세스에 시그널을 보내는 명령어인데 시그널을 명시해주지 않으면 기본적으로 TERM 시그널이 전송되어 작업했던 파일과 설정을 모두 저장한 뒤 프로세스를 종료시킨다.
  • TERM(SIGTERM)은 kill 명령어의 15번 시그널이다.

2. 강제 종료

kill -9 {PID} = kill -KILL {PID}

  • 결국 kill 명령어 자체는 프로세스 종료 명령어가 아니다.
  • kill 명령어의 기본 실행동작이 프로세스 종료일 뿐이다.
  • 시그널로 KILL을 보내게 되면 프로세스를 강제종료 시키기 때문에 저장되지 않은 데이터 등을 잃을 수 있으므로 단순히 프로세스 종료 목적으로 쓰는 것은 위험하다.
  • KILL(SIGKILL)은 kill 명령어의 9번 시그널이다.



💡 결론


프로세스를 종료해야할 때는 TERM 과 같은 시그널을 보내서 프로세스를 안전하게 종료시키자!
> kill {PID}

[ 참조 ]
https://www.lesstif.com/system-admin/unix-linux-kill-12943674.html

profile
기록을 취미로

0개의 댓글