완고한 프로세스를 죽이는 방법

완고한 프로세스를 죽이는 방법

죽지 않는 성가신 프로세스가 있습니다.

ps -A | grep "nzbget" 

나에게주세요:

11394 pts/3    00:00:00 nzbget

내가 시도하면 :

pkill nzbget (or 11394)

...응답이 없습니다. 프로세스는 아직 진행 중이며 맨 위에는 다음과 같은 내용이 표시됩니다.

PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
11394 asystem+  20   0  125448   6244   4984 T   0.0  0.1   0:00.00 nzbget

"nzbget -s"를 사용하여 nzbget을 실행하고 실행 후 이 작업을 수행하면(그리고 중지하려고 하면) [소켓 바인딩 실패] 오류가 발생하고 재부팅만 하면 됩니다.

재부팅하지 않고 어떻게 종료할 수 있나요?

답변1

프로세스가 중지되면*( T의 상태 출력 참고 top) 신호 처리를 전혀 수행할 수 없습니다. 따라서 프로세스 상호 작용이 필요하지 않은 신호를 사용해야 합니다. 귀하의 경우 SIGKILL(9)는 아래와 같습니다.

kill -9 11394

어떤 이유로 프로세스의 코어 덤프를 얻으려는 경우(그리고 시스템이 이에 대해 구성되어 있는 경우) SIGSEGV대신 (11)을 사용할 수 있습니다. 또한 프로세스 상호 작용이 필요하지 않습니다.

* 추적된 프로세스가 신호를 처리할 수 있어야 하고 이로 인해 프로세스가 중지될 수 있으므로 여기서 중지한다고 가정합니다.

답변2

kill -9 11394다음 명령을 호출하는 inelegance를 사용하여 프로세스를 완전히 종료 할 수 있습니다 .

~에서Linux/UNIX 명령줄에서 가장 중요한 3가지 "kill" 신호:

커널은 프로세스에 알리지 않고 프로세스를 해제합니다. 이와 같은 불건전한 종료로 인해 데이터가 손실될 수 있습니다. 이것은 가장 "가장 어렵고" "가장 거칠고" 가장 안전하지 않은 킬 신호이며 겉으로는 막을 수 없는 것처럼 보이는 것을 멈추는 데에만 사용할 수 있습니다.

답변3

시도해 볼 수 있는 다양한 신호가 있으며 다른 사람들이 이를 나열할 것이라고 확신합니다. 그러나 제가 찾은 가장 효과적인 신호는 다음과 같습니다 HUP.

kill -hup 11394

나는 응용 프로그램이 다른 신호에 응답하지 않는 많은 경우에 이것이 작동한다는 것을 발견했습니다. 실패하면 이 작업을 수행할 수 있습니다 kill -9. 단, 플러그를 뽑기만 하면 애플리케이션이 정리되지 않으므로 부작용이 있을 수 있습니다.

답변4

X 응용 프로그램의 경우 xkill을 사용하고 명령줄 종료에 응답하지 않을 때 응용 프로그램 창을 클릭하면 행운이 있었습니다.

관련 정보