시작 시 현재 런레벨에 대한 시작 스크립트 목록을 표시하려고 합니다. 다음 코드를 작성했습니다.
rl=`runlevel | cut -d " " -f2`
ls /etc/rc.d/rc$rl.d/S* | cut -d "/" -f5
sleep 10
rc.local
이 코드를 파일에 넣으면 작동합니다.
rc
그런데 파일이나 별도의 스크립트 파일 abc
에 넣어서 /etc/init.d
런레벨 디렉터리에 소프트링크를 만들어 놓으면 동작하지 않습니다.
그러나 아래와 같은 간단한 명령은 모든 방법에서 작동합니다.
ls /etc/init.d
특정 스크립트가 시작되지 않으면 특정 명령(예: 실행 수준 또는 파이프)이 작동하지 않습니까? 아니면 다른 것이 있습니까?
코드를 파일에 넣으면 rc
재부팅 전후에 코드가 실행됩니다.
rc
그렇다면 파일rc.local
과 파일rc.sysinit
의 차이점은 무엇입니까 ?- 이 파일을 정확히 어디에서 편집해야 합니까?
2, 3, 4, 5 런레벨에서 S99local
-> 소프트 링크 도 찾을 수 있습니다.rc.local
rc.local
이것은 런레벨 1에서 실행될 수 없다는 것을 의미합니까 ?
답변1
rc
Linux 배포판에서는 일반적으로 이를 사용하지 않지만BSD용rc.local
심볼릭 링크를 추가하지 않고 시작 중에 추가 명령을 실행할 수 있도록 사용됩니다.rc.sysinit
그런 것 같다빨간 모자구체적이고 프로세스 초기에 수행하십시오. 첫 번째 스크립트 중 하나로 실행되고rc.local
나중에 실행됩니다.
또한 런레벨 2, 3, 4 및 5에서 rc.local에 대한 S99local -> 소프트 링크를 찾을 수 있습니다. 이것은 rc.local이 런레벨 1에서 실행되지 않는다는 것을 의미합니까?
맞습니다. 이는 심볼릭 링크인 S99local이 /etc/rc.local
런레벨에 들어갈 때 실행되는 마지막 스크립트 중 하나가 된다는 의미입니다. 런레벨처럼 실행되지 않습니다.2
3
4
5
1
1
단일 사용자일반적으로 구조/유지보수 작업에 사용되는 실행 수준입니다.
답변2
rc.sysinit
이는 init 프로세스에 의해 실행되는 첫 번째 스크립트입니다. 이 스크립트는 시스템을 초기화하는 데 사용되며 다음을 포함합니다.
- 커널 모듈 로드
- 호스트 이름 설정
- sysctl.conf에서 커널 매개변수 구성
- 직렬 포트, RAID, LVM 초기화
- 파일 시스템(/etc/fstab의 /proc, /sys 및 기타)을 확인하고 마운트합니다. 이는 /etc/fstab에 지정된 옵션을 사용하여 루트 파일 시스템을 다시 마운트하는 경우입니다(루트 파일 시스템은 init 프로세스가 시작되기 전에 /sysroot에서 커널에 의해 읽기 전용으로 마운트된다는 점을 기억하십시오).
실행 후 실행 수준 스크립트가 실행됩니다(기본 실행 수준이 3인 경우 rc.sysinit
내부 스크립트가 실행됩니다)./etc/rc.d/rc3.d/
스크립트는 런레벨 스크립트가 실행된 후에 실행 /etc/rc.d/rc.local
되며 전체 SysV 스크립트 내용(심볼릭 링크 생성 및 특정 형식으로 스크립트 이름 지정 포함)을 실행하지 않으려는 경우 추가 시작 콘텐츠를 파일 등