kill -9 대신 kill -11을 사용하면 위험이 있습니까?

kill -9 대신 kill -11을 사용하면 위험이 있습니까?

나는 최근에 유틸리티가 내가 원하는 어떤 신호라도 보낼 수 있다는 것을 깨달았습니다 . 그래서 프로세스가 kill필요할 때 (멈추거나 하는 일이 있을 때) 약간의 웃음을 위해 대신에 를 보냅니다( 대신 .)SIGKILLSIGSEGVkill -11kill -9

그러나 이것이 나쁜 습관인지는 모르겠습니다. 그럼 kill -11그보다 더 위험한 걸까요 kill -9? 그렇다면 어떻게 해야 할까요?

답변1

SIGSEGV신호는 커널에 의해 잘못된 가상 메모리 참조(세그먼트 오류)를 만든 프로세스로 전송됩니다.

전송이 SIGSEGV더 "위험"할 수 있는 한 가지 방법은 공간이 부족한 파일 시스템에서 프로세스를 종료하는 경우입니다. 프로세스가 a를 수신할 때 기본 작업은 SIGSEGV코어를 파일로 덤프한 다음 종료하는 것입니다. 코어 파일은 프로세스에 따라 매우 커질 수 있으며 파일 시스템을 가득 채울 수 있습니다.

@Janka가 이미 언급했듯이 신호를 처리하는 방법을 프로그램에 알려주는 코드를 작성할 수 있습니다 SIGSEGV. SIGKILL또는 를 캡처할 수 없습니다 SIGSTOP. 단지 프로세스를 종료하고 싶을 때 a 또는 a를 사용하는 것이 좋습니다 SIGKILL. 일반적으로 을 사용하면 부정적인 결과가 발생하지 않지만 종료하려는 프로세스가 예상하지 못한 방식으로 를 처리할 수 있습니다.SIGSTOPSIGSEGVSIGSEGV

답변2

SIGSEGV는 수신 프로그램에 의해 포착될 수 있으며, 그러면 프로그램이 원하는 것은 무엇이든 수행할 수 있습니다.

SIGKILL 및 SIGSTOP은 프로그램이 포착하거나 무시할 수 없는 유일한 신호입니다.

관련 정보