/etc/init.d의 Linux 부팅 순서 이해

/etc/init.d의 Linux 부팅 순서 이해

데비안에 관한 질문인데, 많은 리눅스 환경에서도 마찬가지일 것 같습니다.

/etc/init.d디렉터리는 부팅 시 실행되는 서비스를 정의합니다. 누가 언제 달리는지 정의하는 두 가지 메커니즘이 있는 것 같습니다.

  • 실행 레벨 디렉토리 - /etc/rcN.d/디렉토리에는 스크립트에 대한 심볼릭 링크가 있으며, init.d그 안에 있는 숫자는 스크립트가 실행되는 순서를 정의합니다. 이러한 기호 링크는 를 실행하여 생성됩니다 update-rc.d.
  • insserv 파일 - .depend.start/stop/boot이 유틸리티에서 생성된 파일입니다 insserv. 이 파일에서 TARGETS나타나는 순서대로 실행 중인 스크립트를 볼 수 있습니다 (참조:이 게시물)

그렇다면 첫 번째 질문은 - 부팅 순서를 결정하는 것은 무엇입니까?


부팅 순서 를 변경하려면 rc.N디렉토리에서 심볼릭 링크 이름을 편집 하거나 .depend.start.insservupdate-rc.d

두 번째 질문 - insservinit.d 스크립트를 호출한 후에도 지속되는 방식으로 시작 순서를 제어하는 ​​방법은 무엇입니까 update-rc.d?

답변1

sysvinit(systemd는 다르지만 initscript가 아닌 단위를 사용할 수 있음) 의 경우 부팅 순서 는 에 의해 부팅 중에 생성됩니다 /etc/rc?.d. 거기의 심볼릭 링크는 실제로 구현 세부 사항입니다( etc 파일 포함). 주의해야 할 것은 LSB 헤더에 선언된 initscript 간의 종속성입니다.update-rc.dinsserv.depend.boot예를 들어:

### BEGIN INIT INFO
# Provides:          unbound
# Required-Start:    $network $remote_fs $syslog
# Required-Stop:     $network $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
### END INIT INFO

시작 순서를 변경하려면 관련 initscripts에 종속성을 추가해야 합니다. 가장 안전한 방법은 재정의를 추가하는 것입니다 /etc/insserv/overrides. 재정의하려는 스크립트와 동일한 이름으로 새 파일을 만들고 해당 파일에 새 헤더를 씁니다. 그런 다음 심볼릭 링크 재계산을 실행하세요 update-rc.d yourscript defaults.

맨 페이지에서 자세한 정보를 찾을 수 있습니다.insserv그리고update-rc.d.

관련 정보