임베디드 Linux 장치용 셸 스크립트를 작성할 때 우리 대학에서는 reboot
/ reboot -f
명령 뒤에 무한 루프를 추가하여 재부팅 중에 스크립트의 뒷부분이 실행되지 않도록 하는 경향이 있습니다. 그런데 이것이 reboot -f
실제로 차단 명령 인지 궁금합니다 .
나는 그것을 시도 reboot; touch test
하고 test
그것을 만들었습니다. 따라서 일반은 reboot
비차단이어야 합니다. 그러나 reboot -f ; touch test
명령을 실행해도 생성되지는 않습니다 test
. 일부에서는 touch
touch`가 실행되기 전에 쉘이 종료되었을 수도 있다고 주장할 수 있으므로 이는 충분한 증거가 아닙니다.
실제로 reboot
sysvinit 실행 파일에 대한 심볼릭 링크입니다 halt
.
누구든지 증거나 설명을 줄 수 있습니까? 감사해요.
답변1
운영 체제에 따라 reboot
이는 크게 다를 수 있습니다. 나에게는 reboot
systemctl에 대한 심볼릭 링크였습니다.
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
재부팅 후에 수행할 수 있습니다.