공부

[TIL] kill -9/-15 PID

Zedd0202 2024. 4. 22. 23:03
반응형

인텔리제이에서 Run했더니 

https://springhow.com/web-server-failed-to-start-port-8080-was-already-in-use/ 에서 가져옴

web server failed to start. port 8080 was already in use ~ 에러가 나왔다.

나는 초보도 아니고 궁서체 보초 수준이라서 살짝 당황했지만 침착하게 구글링을 했다.

하라는대로 터미널에 lsof -i :8080를 치니 여러 프로세스가 8080포트를 사용하고 있었다.

암튼 이 프로세스를 죽이면 된다고 kill -9 PID 를 입력하라고 해서 했더니 아주 깔끔하게 지워졌다.

 

해결은 했는데...

내가 이런 커맨드에 익숙하지 않아서 이 생태계(?)를 잘 모르는 상태라 그런지는 몰라도

-e 이런식으로 영어가 적힌건 많이봤어도 -9 처럼 숫자가 있는게 너무 신기해서(..) 이 9가 무슨뜻인지 갑자기 너무 궁금해졌다.


우선 

kill -<signal> <pid>  


이런식으로 사용하고 가운데 9자리에 오는 것은 signal에 해당한다.

signal을 줘도 되고 안줘도 되어서 kill pid로만 쓸 수 있는데, 이는 사실 kill -15 pid와 같다. 

15는 SIGTERM의 번호이며, SIGTERM은 프로세스에게 정상적인 종료를 요청하는 신호다. (15대신에 SIGTERM를 사용해도됨) 

kill pid == kill -15 pid == kill -SIGTERM pid


다만 프로세스가 응답이 없을경우 이 요청을 무시하게 되는데, 이때 사용할 수 있는것이 9다.

 

9는 SIGKILL의 번호이며, SIGTERM은 프로세스를 강제종료하는 신호다. (이것도 9대신에 SIGKILL사용해도됨)

kill -9 pid == kill -SIGKILL pid


프로세스가 이 신호를 받으면 즉시 종료된다.

즉시 종료되기 때문에 마무리 작업을 할 수 가 없으니,

프로세스가 자원을 정리하지 않는다거나, 저장하지 않은 데이터가 날아간다거나 하는 부작용이 있을 수 있다고 한다. 

 

되도록 15를 사용하여 kill을 하라는데 나는  kill -9 pid를 한 후에 그 사실을 알게되었다. ㅎ;

별건 아니지만 개인적으로 흥미롭게 알게된 사실이라 정리해본다. 

반응형