ssh를 통해 재부팅 --force 호출: 다시 시작하기 전에 ssh 세션 연결이 끊어지나요?

ssh를 통해 재부팅 --force 호출: 다시 시작하기 전에 ssh 세션 연결이 끊어지나요?

reboot --force스크립트에서 자동으로 ssh를 통해 실행 해야 합니다 (--force로 인해 데이터가 손실될까 걱정하지 마세요. sync이전에 이미 명령을 실행했습니다).

지금까지 나는 다음을 통해 성공적으로 수행했습니다.

orig_args=(bash -c "nohup reboot --force >/dev/null 2>&1 </dev/null &")

args=(); for v in "${orig_args[@]}"; do args+=("$(printf %q "$v")"); done

ssh host "${args[@]}"

의미는

bash -c "nohup reboot --force >/dev/null 2>&1 </dev/null &"

reboot --force즉, SSH 연결이 닫혀도 포그라운드에서 실행됩니다.

재부팅하기 전에 SSH 세션 연결 해제가 발생하길 원하지만 확실하지 않습니다.

즉, 다음이 가능합니까?

운영 체제가 백그라운드 다시 시작 작업을 너무 빨리 시작하면 ssh 연결이 끊어져 ssh 명령 자체가 실패할 수 있습니다.

대답이 거짓이기를 바랍니다. 내 희망을 뒷받침할 것이 있습니까?

대답이 "확실하지 않음"이면 위험을 감수할 수 없으며 다른 방법을 사용하겠습니다.귀찮은이를 보장하는 방법.

orig_args=(bash -c "nohup bash -c 'sleep 1; reboot --force' >/dev/null 2>&1 </dev/null &")

args=(); for v in "${orig_args[@]}"; do args+=("$(printf %q "$v")"); done

ssh host "${args[@]}"

sleep 2

이는 ssh 명령이 reboot --force서버에서 실행된 후 1초 후에 종료됨을 의미합니다. 그런 다음 클라이언트 측에서 2초 동안 기다립니다.

이렇게 하면 나는 확신할 수 있다

  • ssh 명령은 항상 성공합니다.
  • 전체 스크립트가 종료된 후에는 최소한 서버가 다운되어야 합니다.

관련 정보