rc 폴더에는 부팅 시 실행되는 파일이 포함되어 있습니까?

rc 폴더에는 부팅 시 실행되는 파일이 포함되어 있습니까?

에 파일을 만들고 /etc/rc0.d이름을 rc.local.

이 파일에는 내가 넣은 다른 파일을 실행하는 줄을 추가했습니다 Desktop. 시작 시 명령이 실행되도록 이 모든 작업을 수행했습니다. 나는 팔로우한다이 문서의 지침(첫 번째 방법) 그러나 아무것도 작동하지 않는 것 같습니다.

왜 이것이 작동하지 않습니까?

답변1

/etc/rc.d/귀하가 링크한 설명에는 한때 모든 시작 스크립트 디렉토리를 그룹화하는 데 사용되었던 대부분의 역사적인 디렉토리가 언급되어 있습니다. , 등이 있을 /etc/rc.d/init.d/것 입니다 /etc/rc.d/rc0.d/. /etc/rc.d/rc1.d대부분의 최신 배포판에서는 오랫동안 이 rc.d디렉터리를 생략하고 다른 디렉터리를 /etc/.

/etc/rc0.d/스크립트에 대한 심볼릭 링크를 포함해야 합니다(스크립트의 실제 위치는 이어야 함 /etc/init.d/).시스템이 종료되거나 전원이 꺼집니다..

/etc/rc6.d/실행되어야 하는 스크립트에 연결하는 데 사용됩니다.재시작(예: 커널 업데이트 설치 후와 같이 시스템을 종료하고 즉시 재부팅하려는 경우)

스크립트 연결에 가장 적합한 디렉터리는 시스템 구성 및 시스템의 기본 실행 수준(SysVinit를 사용하는 경우)에 따라 또는 /etc/rc3.d/입니다 /etc/rc5.d/. Debian 기반 Linux 배포판은 일반적으로 일반 다중 사용자 상태(클래식 SysVinit 가정)에 런레벨 3을 사용하는 반면, RedHat/Fedora 기반 배포판은 GUI 로그인이 활성화된 다중 사용자 상태에 런레벨 5를 사용하고 다중 사용자 상태를 달성하려면 런레벨 3을 사용합니다. 로컬 X11 GUI 하위 시스템을 비활성화하여 사용자 상태.

모든 디렉토리의 심볼릭 링크 이름은 /etc/rc?.d/대문자 S 또는 대문자 K로 시작해야 하며 그 뒤에 (일반적으로) 해당 디렉토리에 있는 링크의 시작 순서에서 스크립트의 상대적 위치를 식별하는 두 자리 숫자가 와야 합니다. 대문자 S를 사용하면 시스템이 명령줄 인수를 사용하여 링커 스크립트를 실행하고 start, K를 사용하면 시스템에서 stop해당 인수를 사용하게 됩니다.

따라서 스크립트를 넣은 /etc/init.d/rc.local다음 다음과 같이 하나 또는 두 개의 심볼릭 링크를 만들어야 합니다.

ln -s /etc/init.d/rc.local /etc/rc3.d/S99rc.local
ln -s /etc/init.d/rc.local /etc/rc5.d/S99rc.local

하지만 그게 전부는 아닙니다!

최신 Linux 배포판은 클래식 SysVinit을 사용하는 배포판이라도 systemd엄격하게 하나씩 실행하기보다는 다양한 시스템 시작 작업을 병렬로 수행하기 위해 다양한 솔루션을 사용하는 경향이 있습니다. 이는 최신 멀티 코어 CPU에서 병렬화를 통해 시작 프로세스가 더 빨라지기 때문입니다. 이 경우 스크립트 시작 부분에 특수 형식의 주석 블록을 추가하여 스크립트가 의존하는 시스템 서비스를 정의해야 합니다. 그렇지 않으면 병렬 논리가 스크립트를 실행할 수 있습니다.너무 빨라, 필요한 시스템 서비스를 먼저 시작하기 전에.

이는 배포판이 ' systemd공장 기본값'을 사용하는 경우 특히 중요합니다. 일부 배포판의 "공장 기본값"도 rc.local적절한 종속성 정의를 추가하지 않는 한 부팅 프로세스 초기에 실행되기 때문입니다.

바라보다http://refspecs.linuxbase.org/LSB_3.1.1/LSB-Core-generic/LSB-Core-generic/initscrcomconv.htmlSysVinit 스타일 시작/종료 스크립트에 권장되는 주석 블록에 대한 현재 사양입니다.

즉, 스크립트 시작 부분에 다음과 같은 내용을 추가할 수 있습니다 rc.local.

### BEGIN INIT INFO
# Provides: rc.local
# Required-Start: $local_fs $network $remote_fs
# Required-Stop: $local_fs $network $remote_fs
# Default-Start:  2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: run locally-configured start-up commands
### END INIT INFO

내 생각에는 방법 1링크에 대한 설명불완전하고 오래된 조언이 포함되어 있습니다. 다른 두 가지 방법은 새로운 사용자에게 더 쉬울 수 있지만 이러한 방법이 특정 배포판에서 작동하는지 확인하는 방법에 대한 지침은 포함하지 않습니다.

관련 정보