다음과 같은 사용자 정의 초기화가 있다고 가정해 보겠습니다.
#!/bin/bash
sleep infinity
다음 중 init를 로드하는 것은 무엇입니까?
-
#!/bin/bash /sbin/init sleep infinity
-
#!/bin/bash exec /sbin/init sleep infinity
exec가 새 쉘을 시작해야 한다는 것을 알고 있지만, 꼭 필요한가요?
답변1
init
스크립트에서 호출하는 것은 실제로 매우 정상적입니다. 일반적인 부트로더 스크립트는 루트 디스크를 적절하게 마운트한 다음 init를 실행합니다.init
init가 아닌 init로 호출하려면telinit
PID 1로 실행되어야 합니다. 따라서 가 필요합니다exec
. 따라서 init 실행에는 (2) 스크립트만 유용할 수 있습니다.이후에는
exec
스크립트가 더 이상 실행되지 않습니다. 따라서sleep infinity
실행되지 않습니다. exec 이전에 실행되는 모든 것이 유용합니다.단지 다른 것을 실행하고 싶다면 에 적절하게 나열하거나
/etc/inittab
거기에서 스크립트를 호출할 수도 있습니다(보통 에 배치되고/etc/init.d
심볼릭 링크됨)./etc/rc
#.d
).