"reboot -f" 명령이 차단되었는지 어떻게 증명할 수 있나요?

"reboot -f" 명령이 차단되었는지 어떻게 증명할 수 있나요?

임베디드 Linux 장치용 셸 스크립트를 작성할 때 우리 대학에서는 reboot/ reboot -f명령 뒤에 무한 루프를 추가하여 재부팅 중에 스크립트의 뒷부분이 실행되지 않도록 하는 경향이 있습니다. 그런데 이것이 reboot -f실제로 차단 명령 인지 궁금합니다 .

나는 그것을 시도 reboot; touch test하고 test그것을 만들었습니다. 따라서 일반은 reboot비차단이어야 합니다. 그러나 reboot -f ; touch test명령을 실행해도 생성되지는 않습니다 test. 일부에서는 touchtouch`가 실행되기 전에 쉘이 종료되었을 수도 있다고 주장할 수 있으므로 이는 충분한 증거가 아닙니다.

실제로 rebootsysvinit 실행 파일에 대한 심볼릭 링크입니다 halt.

누구든지 증거나 설명을 줄 수 있습니까? 감사해요.

답변1

운영 체제에 따라 reboot이는 크게 다를 수 있습니다. 나에게는 rebootsystemctl에 대한 심볼릭 링크였습니다.

ls -la /sbin/reboot
lrwxrwxrwx 1 root root 14 maj  3 13:30 /sbin/reboot -> /bin/systemctl

systemctl reboot이 경우 which 와 동일합니다 systemctl start reboot.target --job-mode=replace-irreversibly --no-block(systemctl의 매뉴얼 페이지 참조).

-force이 경우 다시 시작 프로세스의 속도만 향상되어 파일을 터치하기 전에 셸이 종료될 수 있습니다.
이를 방지하고 싶다면 다음과 같이 시도해 볼 수 있습니다 systemctl start reboot.target --job-mode=replace-irreversibly. 하지만 재시작 차단이 이렇게 구현될 수 있는지 잘 모르겠습니다.

그러나 시스템화되지 않은 환경에서는 reboot상황이 다르게 작동할 수 있습니다.

제 생각에는 무한 루프가 여기서 가장 깨끗한 솔루션은 아니며 exit재부팅 후에 수행할 수 있습니다.

관련 정보