'kill -9'/ SIGKILL을 사용하지 않아야하는 이유


14

직접 답변을 찾지 못한 것에 놀랐 기 때문에이 질문을 게시; 이것이 중복이라면 사과-나는 보았다!

나는 그것을 들었 kill -9거나 kill -SIGKILL나쁘지만 왜 그런지 이해하지 못합니다. 내가 안하면 kill -9어떻게 해야 내가 프로세스를 종료 할 수 있습니까?


2
질문의 전제가 잘못되었습니다. SIGKILL은 도구 일뿐입니다. 일부 상황에서는 권장되며 다른 상황에서는 권장되지 않습니다 (다른 모든 도구와 마찬가지로).
kubanczyk

@kubanczyk, 그러나 그것은 종종 잘못 적용되는 도구이며 목적을 이해하지 않고 사용됩니다. 나는 A가 말한다 많은 스레드를 보았다 " 그냥 kill -9 "영업 이익은 말한다 " 위대한 일이! 나는! 지금부터 그 기억하겠습니다 "하고, B는 경고에 온다 " 대기가 kill -9위험하다! "단지 사후.
dimo414

답변:


15

SIGKILL러닝 프로세스에서 러그를 꺼내어 즉시 종료합니다. 매우 간단한 프로그램의 경우 이것은 좋습니다. 그러나 실제로는 "간단한"프로그램이 거의 없습니다.

다루기 쉬운 프로그램조차도 finally리소스 핸들 닫기, 임시 파일 삭제 및 디스크에 메모리. 프로그램이 이와 같은 작업을 수행하는 시점을 예상 할 수 없습니다.

운이 좋으면을 보내면 아무 것도 느끼지 SIGKILL못하지만 영원히 행운이 될 수는 없으며 잃어버린 것을 회복하기에는 너무 늦을 때까지 잘못 된 것을 알지 못할 수도 있습니다.

당신은 거의 보낼 필요가 없으며 SIGKILL, 그렇게하기 전에 대안을 다 써야합니다. 대부분의 경우 재부팅 (결국 SIGKILL오작동하는 프로그램에 s을 전송 함 )은 직접 전송하는 SIGKILL것 보다 안전 합니다. 아마 한 손으로 내가 (그리고 아마도 내 자신의 모든 작품 을) 보내야 했던 횟수를 셀 수 있습니다 SIGKILL.

일반적으로 Ctrl+ C(포 그라운드 프로세스를 전송하는 SIGINT) 또는 SIGTERM( "종료"와 같이) 프로세스를 중지하고 종료하도록 프로세스에 지시 할 수 있습니다.

더 읽을 거리 :

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.