/ etc의 rc0.d, rc1.d,… 디렉토리


30

내가 디렉토리가 어디 우분투를 실행하고있어 /etc/rc0.d, /etc/rc1.d, /etc/rc2.d, ..., /etc/rc6.d.

내 컴퓨터의 파일 예 :

directory      example symlinks in the dir
------------------------------------------
/etc/rc1.d:    K76dovecot, K77ntp
/etc/rc2.d:    S23ntp, S24dovecot
/etc/rc3.d:    S23ntp, S24dovecot
/etc/rc4.d:    S23ntp, S24dovecot
/etc/rc5.d:    S23ntp, S24dovecot

질문 :

  1. 여러 "rc"디렉토리의 목적은 무엇입니까?
  2. 왜 우분투의 중복 설치 않았다 dovecotntp제외 디렉토리 모두에 rc0.drc6.d?
  3. 위와 같이 여러 번 지정하면 실제로 여러 번 실행됩니까?
  4. 당신은 무엇을 위해 위의에서 말할 수 dovecotntp시작시에 실행됩니다?
  5. 시작 ntp하기 전에 우분투가 항상 실행되도록 지시하는 올바른 방법은 무엇입니까 dovecot?

답변:


23
  1. 이것들은 runlevel대부분의 * NIX 시스템에 의해 사용되는 System V 스타일의 시작입니다 (대중적인 시스템은 예외 systemd). 커널 / 사용자가 부팅 할 때 무엇 runlevel을 실행하고 결정해야하는지 결정 합니다 runlevel. 따라서 runlevel다른 프로그램 세트로 부팅 할 수 있습니다. 중지 및 재부팅에 대한 런레벨도 있지만 시작 부분에 초점을 맞추고 있으므로 지금 무시하십시오.
  2. runlevel부팅시 하나만 실행 되기 때문에 일부 프로그램은 runlevel같거나 다른 순서로 다른 또는 동일한 매개 변수를 가진 다른 에서 시작 / 중지해야합니다 (모든 런 레벨이 모든 OS에서 동일하지는 않습니다). 그러나 우분투 사본 실행 레벨은 2에서 3-5로, 동일한 이유입니다.
  3. 아니오 . runlevel시작시 또는 변경시 한 번만 실행됩니다 runlevel.
  4. ntp스크립트는 dovecot런레벨 1의 경우가 아니라 런레벨 2-5에서 먼저 실행해야 합니다. 스크립트 이름 ( ) 의 서수 는 실행 순서를 나타냅니다. 따라서 모두 사용중인 실행 수준에 따라 다릅니다.S23ntp
  5. 배포판에 따라 다르지만 우분투의 경우 스크립트를 런레벨 1과 2에 추가 할 수 있습니다.

우분투 런레벨 에 대한 Wikipedia 기사 에서 더 많은 정보


따라서 모든 RC.X 디렉토리에 스크립트를 넣으면 몇 번 실행됩니까?
Flash Thunder

@FlashThunder no.
Braiam

40

다른 사람들이 지적했듯이 대답은 기본적으로 운영 체제의 작동 모드 인 실행 수준 에 관한 것 입니다. Linux에서 일반적으로 다음과 같습니다.

ID  Name                               Description
0   Halt                               Shuts down the system.
1   Single-user Mode                   Mode for administrative tasks.
2   Multi-user Mode                    Does not configure network interfaces and 
                                       does not export networks services.
3   Multi-user Mode with Networking    Starts the system normally.
4   Not used/User-definable            For special purposes.
5   Start the system normally with 
    with GUI                           As runlevel 3 + display manager.
6   Reboot                             Reboots the system.

따라서 각 rcN디렉토리에는 해당 런레벨에서 실행되어야하는 스크립트에 대한 심볼릭 링크가 포함되어 있습니다. 모든 실제 스크립트는 일반적으로 /etc/init.d디렉토리에 있습니다.

$ ls -l /etc/rc5.d/S22cron
lrwxrwxrwx 1 root root 14 Jan 14  2013 /etc/rc5.d/S22cron -> ../init.d/cron

심볼릭 링크 이름

이름이로 시작하는 심볼릭 링크 S는 해당 런레벨에서 시작되고 이름이 시작하는 링크는 종료됩니다 K. rc6.d재부팅 런레벨의 모든 링크는로 시작합니다 K. 재부팅을 위해 모두 중지해야하며 아무것도 시작하지 않아야하기 때문입니다.

첫 글자 뒤의 숫자는 연결된 스크립트의 실행 순서를 나타냅니다. 숫자가 작은 사람이 숫자가 높은 사람보다 먼저 실행됩니다. 따라서 특정 예에서는 S23ntp(이 경우 시작) 전에 실행 S24dovecot 됩니다.


좋은 답변입니다! 두 개의 스크립트가 같은 숫자, 예를 들어이 있으면 무엇을 : S01bluetoothS01rsync, 순서는 임의의 수 있습니까?
direprobs

@direprobs 허, 좋은 질문입니다. 네, 어느 쪽이든 무작위로 선택 될 것입니다. 그래도 내가 말할 수는 없습니다.
terdon

@tredon 나는 그들이 S01비교 를 시작하기 때문에 파일 이름을 기반으로 선택 될 것이라고 생각 합니다 b<< r, 당신은 아이디어를 얻습니다. 아마도!
direprobs

1
짧은 대답은있다 /etc/init.d/rc라고 for s in /etc/rc$runlevel/S*; do …단순히 글로브 확장 위해 간다, 그래서; 즉, 숫자 / 알파벳. 긴 대답은 코드가 기억하는 것보다 훨씬 복잡하다는 것입니다. 앞으로 6 ~ 8 주 안에 언젠가는 공부에 시간을 투자 할 것입니다. 그것은 이후의 번호를 추출하는 것처럼 언뜻보기에, 그것은 외모 S와 그것으로 뭔가를하고, 그래서 S42beeblebroxS42zaphod보다 긴밀하게 말하자면,보다 연관 될 수, S43arthurS44dent.
G-Man, 'Reinstate

정말 좋은 답변 주셔서 감사하지만 질문이 있습니다. 프로그램을 시작할 때 프로그램 속도가
느리지 만

4

1) 다중 rcX.d 디렉토리는 'X'실행 레벨 중에 시작하거나 중지 할 서비스를 지정합니다.

2) rc0.d는 종료되는 실행 레벨 0입니다. rc6.d는 재부팅을위한 것입니다. 나머지는 모두 다른 런레벨 (2-5)을위한 것입니다. S는 시작을 나타내고 K는 킬을 나타냅니다. 이것은 본질적으로 /etc/rc.d의 원본 스크립트에 대한 링크입니다. S / K 뒤의 숫자는 서비스가 시작 / 종료되는 우선 순위입니다.

3) 예, 여러 번 지정하면 시작 / 종료 스크립트가 여러 번 실행됩니다. 그러나 아무도 그렇게하고 싶지 않습니다.

4) 우선 순위 번호를 보면, ntp 서비스가 먼저 시작되고 dovecot이 시작됩니다.

5) 네 번째 요점은 길입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.