/ etc / init /와 /etc/init.d/의 차이점은 무엇입니까?


답변:


229

/etc/init.dSystem V init 도구 (SysVinit)에서 사용하는 스크립트를 포함합니다. 이것은 Linux를위한 전통적인 서비스 관리 패키지이며, init프로그램 (커널 초기화가 완료되었을 때 실행되는 첫 번째 프로세스 ¹)과 서비스를 시작 및 중지하고 구성하기위한 인프라가 포함되어 있습니다. 특히,의 파일 /etc/init.d에 대응 쉘 스크립트입니다 start, stop, restart(지원되는 경우)와 reload특정 서비스를 관리하는 명령은. 이 스크립트는 다른 트리거를 통해 직접 또는 (가장 일반적으로) 호출 할 수 있습니다 (일반적으로의 기호 링크가 있음 /etc/rc?.d/).

/etc/initUpstart가 사용하는 구성 파일을 포함합니다. Upstart는 Ubuntu가 지원하는 젊은 서비스 관리 패키지입니다. 의 파일은 /etc/init방법과시기에 갑자기 출세 한 이야기 구성 파일입니다 start, stop, reload구성, 또는를 조회 status하는 서비스의. 자명 한 현재 Ubuntu는 SysVinit에서 Upstart로 전환하고 있는데, 이는 Upstart 구성 파일이 선호되는 경우에도 많은 서비스에 SysVinit 스크립트가 제공되는 이유를 설명합니다. 실제로 SysVinit 스크립트는 Upstart의 호환성 계층에 의해 처리됩니다.

.d(예 디렉토리 이름 전형적 특정 상황에 대한 다양한 구성 파일 또는 스크립트를 포함하는 디렉토리를 나타내는 /etc/apt/sources.list.d가상하도록 연접되는 파일을 포함하는 sources.list, /etc/network/if-up.d네트워크 때 실행되는 스크립트에 포함 내가 nter F ACE가 활성화된다). 이 구조는 일반적으로 디렉토리의 각 항목이 다른 소스에서 제공 될 때 사용되므로 각 패키지가 단일 구성 파일을 구문 분석하지 않고 자체 플러그인을 입금 할 수 있습니다. 이 경우 "init"는 디렉토리의 논리적 이름이고 SysVinit가 먼저 사용되고 사용 init.d되며 Upstart는 일반을 사용했습니다.init비슷한 목적을 가진 디렉토리를 위해 (대부분의 경우 "주류"였을 것이고, 아마도 오만했을 수도 있습니다 /etc/upstart.d).

¹ initrd를 계산하지 않음


28
난해한 역사적 메모 : .dSystem V로 입력 한 디렉토리 예를 들어, cat그것이 수행하는 작업의 이름이 잘못 되었다고 생각 되면 시스템 전체에서 파일을 변경하기 위해 얼마나 많은 파일을 터치해야하는지 상상해보십시오.
msw

Upstart와 SysVinit 중 어느 디렉토리가 사용됩니까? 확인하는 방법이 있습니까?
asheeshr

3
@AsheeshR upstart또는 라는 패키지가 있는지 확인하십시오 sysvinit. 그리고 최근 버전에서는 systemd( 아마도 대답을 썼을 때 우분투에는 없었 습니다)있을 수 있습니다 . 패키지가 제공하는 /sbin/init( dpkg -S /sbin/init)입니다.
Gilles

Bitnami에서 사용중인 AWS Ubuntu 인스턴스에서 upstart/ sbin / init (ran dpkg -S /sbin/init) 를 제공 하는 패키지입니다 . 그러나 Bitnami는 스크립트를 /etc/init.d 디렉토리에 배치했습니다. 위의 @AsheeshR에 대한 귀하의 답변과 충돌하지 않습니까? 감사합니다.
Sabuncu

@Sabuncu“SysVinit 스크립트는 Upstart의 호환성 계층에 의해 처리됩니다”의 예입니다.
Gilles

29

".d"는 일반적으로 디렉토리 이름에 추가되어 단일 스크립트 또는 단일 구성 파일에서 처리했거나 처리 할 수있는 항목이 편의상 여러 파일로 분할되었음을 나타냅니다. 함께 포함되거나 함께 실행되어야합니다.

예를 들어, /etc/apache/conf.d/또는/etc/apt/sources.d/

어떤 순서로 포함 / 실행해야하는지 중요한 경우,이 디렉토리의 파일은 "00-default"또는 "80-user"와 같은 숫자로 시작하여 올바른 순서로 실행됩니다.

의 경우 /etc/init.d/그것은 일종의 "있는 init.d"의 스크립트가 모두 실행해야 함을 나타냅니다. 그러나 오늘날 현대 운영 체제의 init 시스템은 그보다 조금 더 복잡하지만 디렉토리 이름은 여전히 ​​존재합니다.


어쩌면 .d그것은 부팅 할 때 일반적으로 시작되는 '데몬'프로세스와 관련이 있다는 것을 의미합니다.

21
.d는 디먼이 아닌 디렉토리 용입니다.
Martin

13

지적했듯이 ".d"명명법은 당혹스럽고 이상하며 현대 시스템에는 실제로 존재하지 않습니다. 대부분의 최신 서비스가이를 떨어 뜨리는 경향이 있습니다.

디렉토리가 존재 /etc/init하지 않는 이유는 /etc/upstartUpstart가 프로젝트 이름이기 때문에 실제 설치된 바이너리는 여전히 /sbin/init바이너리와 일치하지 않는 이름을 갖는 구성에는 의미가 없습니다.


7
이것은 잘못입니다. 예를 들어 rules.d, uorg ' s , Xorg의 비교적 최근의 xorg.conf.d, 너무 오래되지 않은 /etc/profile.d등을보십시오.
Ruslan
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.