언제 -9 프로세스를 종료하면 안 됩니까?

언제 -9 프로세스를 종료하면 안 됩니까?

저는 항상 이것을 실행하는 것을 주저 kill -9하지만, 다른 관리자들이 거의 끊임없이 이 작업을 수행하는 것을 봅니다.

아마도 합리적인 중간 지점이 있다고 생각합니다.

  1. 언제, 왜 kill -9사용되나요? 언제, 왜 안되는가?
  2. 하기 전에 무엇을 시도해야 합니까?
  3. 어떤 종류의 디버깅 "중단" 프로세스가 추가 문제를 일으킬 수 있습니까?

답변1

일반적으로 말하면 대상 프로세스가 자체적으로 정리할 수 있는 기회를 제공하기 위해 앞에 ()( , 또는 대부분의 시스템에서 kill약어로 사용) 을 사용해야 합니다 . (프로세스는 포착하거나 무시할 수 없지만 포착할 수 있으며 종종 포착합니다.) 프로세스에 수행 중인 작업을 완료하고 정리할 기회를 주지 않으면 손상된 파일(또는 기타 상태)이 그대로 남아 다시 시작될 수 있습니다. 나중에는 이해하지 못할 것이다.kill -s TERMkill -15kill -9kill -s KILLSIGKILLSIGTERM

strace/ truss, ltrace일반적으로 gdb멈춘 프로세스가 멈춘 이유를 이해하는 것이 좋습니다. ( 특히 Solaris에서 유용합니다. 라이브러리 호출에 대한 인수가 종종 사용할 수 없는 형식으로 제공된다는 truss -u것을 알았습니다 .) Solaris에는 또한 Solaris 기반의 유용한 도구가 있으며 그 중 일부는 Linux로 이식되었습니다. ( 보통 도움이 됨).ltrace/procpstack

답변2

Randal Schwartz는 목록에 "쓸모없는(x) 사용"을 게시하곤 했습니다. 기사 중 하나에는 kill -9따라야 할 이유와 팁이 포함되어 있습니다.이건 리빌드 버전이에요(아래 인용).

(역겨운 인용문)

아니, 아니. kill -9를 사용하지 마십시오.

프로세스에 깨끗한 기회를 제공하지 않습니다.

1) 소켓 연결을 닫습니다.

2) 임시 파일 정리

3) 곧 사라질 것임을 자녀에게 알립니다.

4) 단말기 특성 재설정

기타 등등

일반적으로 15개를 보내고 1~2초 정도 기다렸다가 작동하지 않으면 2개를 보내고, 작동하지 않으면 1개를 보냅니다. 그래도 작동하지 않으면 이 프로그램이 제대로 작동하지 않으므로 바이너리를 삭제하세요!

kill -9를 사용하지 마십시오. 화분을 정리하기 위해 콤바인을 꺼내지 마세요.

유즈넷의 또 다른 쓸모없는 사용,

(.징후)

답변3

프로그래머의 관점에서 보면 kill -9전원 코드를 뽑아 컴퓨터를 종료하는 것이 항상 가능해야 하는 것처럼 이 작업도 항상 가능해야 합니다. 반사회적일 수 있고 약간의 회복 작업이 필요할 수 있지만 인내심이 없는 사람들에게는 효과가 있고 강력한 도구가 되어야 합니다.

나는 이것을 일반 먼저 시도하는 사람으로서 이렇게 말합니다. kill (15)왜냐하면 프로그램이 정리 작업을 수행할 수 있는 기회를 주기 때문입니다. 아마도 로그에 "exiting on sig 15"라고 쓸 수도 있습니다. 하지만 나는 나쁜 행동에 대한 어떠한 불만도 받아들이지 않을 것입니다 kill -9.

이유:

  • 고객이 어리석은 행동을 하는 것을 막을 수는 없습니다.
  • 무작위 kill -9테스트는 훌륭하고 공정한 테스트 시나리오입니다.
  • 시스템이 이를 처리할 수 없으면 시스템이 손상된 것입니다.

그러나 우리가 사용하는 모든 소프트웨어가 이상적인 것은 아닙니다.

또한 를 사용하면 kill -9코드의 견고성과 관계없이 어떤 경우에도 데이터가 손실될 위험이 항상 있습니다.

답변4

kill -9다른 모든 답변에는 언급되지 않은 프로세스가 종료되고 종료될 수 없으며 전혀 작동하지 않는 경우가 하나 있습니다 .<defunct>

상위 프로세스가 init인 <defunct> 프로세스를 종료하는 방법은 무엇입니까?

유효하지 않은 프로세스는 무엇이며 종료되지 않는 이유는 무엇입니까?

kill -9따라서 프로세스 <defunct>를 실행하기 전에 먼저 해당 상위가 무엇인지 확인한 다음 해당 상위에서 (TERM) 또는 (INT) ps -ef를 수행하고 마지막으로 (KILL)을 시도하십시오 .-15-2-9

노트: 무엇 ps -ef인가요.

나중에 편집하고 참고하세요:프로세스, 상위 또는 하위 프로세스를 종료할 때 파일이 열려 있거나 손상되고, 연결이 불완전하고, 데이터베이스가 잠재적으로 손상될 수 있으므로 주의하십시오. 프로세스의 기능을 모르는 경우 kill -9최후의 수단으로만 사용하고 필요한 경우에만 사용하십시오. 사용하기 전에 위에 지정된 신호를 사용하여 kill을 실행하십시오.-9 (KILL)

관련 정보