다시 시작해도 효과가 없습니다.

다시 시작해도 효과가 없습니다.

내 가상 머신은 우분투(14.04.4)에서 실행되고 있습니다. 때로는 재부팅 명령을 통해 가상 머신을 다시 시작하고 싶을 때도 있습니다. 명령을 실행하면 "성공"이라고 표시되지만 아무 일도 일어나지 않습니다.

시스템 로그를 확인했는데 특별한 로그는 발견되지 않았습니다. SSH와 같은 일부 서비스가 다운된 것 같습니다.

방금 다시 시작하기 전에 가상 머신(1.12.6)에 docker hang 문제가 있었고 /var/lib/docker에서 docker 파일을 삭제했습니다. 좀비 프로세스가 여전히 존재합니다.

VM 웹 콘솔에서 VM을 다시 시작할 수 있습니다. (허가가 없습니다)

나는 알고 싶다,

  • 이런 일이 발생하면 어떻게 해야 합니까?
  • /proc에서 발견된 것과 같이 이 문제에 대한 단서를 어떻게 찾을 수 있습니까? "shutdown -r"을 사용하여 다시 시작하고, 실행 중인 모든 프로세스를 종료하려고 합니다. 어떤 상황에서든 "다시 시작"이 중단됩니까?
  • 첫 번째 "reboot" 명령 후에 "reboot -f"를 다시 실행하여 시스템을 종료할 수 있습니까? 안전하지 않아서 시도하지 않았습니다.

폴리스티렌

이 문제에 대해 마법 명령을 실행하면 서버가 즉시 성공적으로 다시 시작됩니다.

echo 1 > /proc/sys/kernel/sysrq
echo b > /proc/sysrq-trigger

더티 페이지를 디스크에 동기화하거나 실행 중인 모든 프로세스를 종료하는 등 다시 시작하면 정상적으로 다시 시작할 수 있다는 것을 알고 있습니다.

다시 시작을 실행했을 때 일부 좀비 프로세스가 특수 네임스페이스에 생성되었습니다. docker 컨테이너가 삭제되고 네임스페이스도 삭제되므로 메모리에는 task_struct만 남고 wait4에 의해 해제되어야 합니다.

프로세스 간의 상속은,

용기를 꺼낸 후 폐기,

  1. 도커 컨테이너가 종료되면 init 1에 의해 하위 프로세스가 채택됩니다.
  2. 컨테이너가 삭제되었기 때문에 진입점 시작 프로세스를 종료할 수 없습니다.
  3. 부모 프로세스가 wait 없이 메모리에 남아 있기 때문에 좀비가 지속됩니다4

    • init 1 (global ns) -> docker 컨테이너화 (global ns) (sleep) -> docker 진입점 시작 (container ns) (sleep) -> java (container ns) (좀비)

관련 정보