-1 코드를 반환하지 않고 SSH 연결을 통해 어떻게 다시 시작할 수 있나요?

-1 코드를 반환하지 않고 SSH 연결을 통해 어떻게 다시 시작할 수 있나요?

내가 사용하고 있는 시스템은 sshLinux 시스템에 원격으로 연결하기 위한 것입니다. 그런 다음 단일 쉘 명령을 실행하고 쉘 명령의 출력을 분석합니다.

을 실행하면 물론 다시 시작하면 SSH 연결이 종료되므로 reboot종료 코드가 표시됩니다 . 0이 아닌 종료 코드를 사용하면 시스템 등록이 실패하므로 세션을 정상적으로 다시 시작하고 종료하기 -1위해 한 줄 명령을 작성하려고 했습니다 .ssh

문제의 컴퓨터는 매우 간단하며 재부팅 유틸리티에서는 어떤 옵션도 허용하지 않으므로 나중에 재부팅하도록 예약할 수는 없습니다.

고민 끝에 나는 달려가 보았다.

$ sleep 3 && reboot & exit

수동으로 호출하면 작동합니다. 오류 코드와 함께 연결이 닫히고 03초 후에 컴퓨터가 다시 시작됩니다. 엄청난.

그러나 시스템을 통해 동일한 명령을 실행해도 실제로 재부팅되지는 않았습니다. 종료 코드 0만 반환하고 다시 시작하지 않습니다.

왜 그럴까요?

답변1

shutdown명령을 사용하십시오 .

shutdown --reboot +1 "System is going down for reboot in 1 minute"

reboot작동하지 않는 이유는 tty가 필요하기 때문이라고 생각합니다. 백그라운드 tty를 사용하여 실행해 볼 수 있지만 해당 shutdown명령에는 응답에 표시된 대로 취소를 포함하여 필요한 모든 것이 포함되어 있습니다.

Shutdown scheduled for Thu 2018-02-22 15:19:33 MST, use 'shutdown -c' to cancel.

답변2

일반적으로 를 return하면 true종료 코드 0이 반환됩니다.

shutdown -r now || true

관련 정보