내가 사용하고 있는 시스템은 ssh
Linux 시스템에 원격으로 연결하기 위한 것입니다. 그런 다음 단일 쉘 명령을 실행하고 쉘 명령의 출력을 분석합니다.
을 실행하면 물론 다시 시작하면 SSH 연결이 종료되므로 reboot
종료 코드가 표시됩니다 . 0이 아닌 종료 코드를 사용하면 시스템 등록이 실패하므로 세션을 정상적으로 다시 시작하고 종료하기 -1
위해 한 줄 명령을 작성하려고 했습니다 .ssh
문제의 컴퓨터는 매우 간단하며 재부팅 유틸리티에서는 어떤 옵션도 허용하지 않으므로 나중에 재부팅하도록 예약할 수는 없습니다.
고민 끝에 나는 달려가 보았다.
$ sleep 3 && reboot & exit
수동으로 호출하면 작동합니다. 오류 코드와 함께 연결이 닫히고 0
3초 후에 컴퓨터가 다시 시작됩니다. 엄청난.
그러나 시스템을 통해 동일한 명령을 실행해도 실제로 재부팅되지는 않았습니다. 종료 코드 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