![완고한 프로세스를 죽이는 방법](https://linux55.com/image/35142/%EC%99%84%EA%B3%A0%ED%95%9C%20%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4%EB%A5%BC%20%EC%A3%BD%EC%9D%B4%EB%8A%94%20%EB%B0%A9%EB%B2%95.png)
죽지 않는 성가신 프로세스가 있습니다.
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을 사용하고 명령줄 종료에 응답하지 않을 때 응용 프로그램 창을 클릭하면 행운이 있었습니다.