고쳐 쓰다

고쳐 쓰다

Debian Wheezy의 LSB Init 스크립트에서 이상한 동작이 발생했습니다. 다음 예를 통해 문제를 보여줄 수 있습니다.

스크립트는 실행 수준 및 에서 /etc/init.d/resolvconf시작되고 중지됩니다 S.06

# Default-Start:     S
# Default-Stop:      0 6

실제로 chkconfig resolvconf on스크립트를 열면 각 런레벨 디렉터리에 심볼릭 링크가 생성된 것을 볼 수 있습니다.

$ ls /etc/rc?.d/*resolvconf
/etc/rc0.d/K02resolvconf
/etc/rc6.d/K02resolvconf
/etc/rcS.d/S13resolvconf

종료 스크립트를 사용하면 chkconfig resolvconf off심볼릭 링크가 사라집니다. 여태까지는 그런대로 잘됐다.

이제 스크립트를 시작하지 않기로 결정했지만 S(수동으로 시작하겠습니다) 여전히 runlevel에서 스크립트를 중지하고 싶습니다 0. 6이에 따라 기본 시작을 변경했습니다.

# Default-Start:     
# Default-Stop:      0 6

그리고 스크립트를 엽니다 chkconfig resolvconf on. 그러나 아무 일도 일어나지 않았습니다.

$ ls /etc/rc?.d/*resolvconf
ls: cannot access /etc/rc?.d/*resolvconf: No such file or directory

심볼릭 링크가 생성되지 않았으며 스크립트가 실행 수준 0및 에서 실행되지 않습니다 6.

여기서 무슨 일이 일어나고 있는 걸까요?

런레벨에서만 스크립트가 0실행(중지) 6되고 런레벨에서는 시작되지 않도록 하려면 어떻게 해야 합니까 S?

고쳐 쓰다

@Rui F Ribeiro가 제안한 대로 해당 줄을 완전히 제거했습니다 # Default-Start:. 이제 실행하면 chkconfig resolvconf on다음 오류가 발생합니다.

insserv: Script resolvconf is broken: incomplete LSB comment.
insserv: missing `Default-Start:'  entry: please add even if empty.
insserv: Default-Start undefined, assuming empty start runlevel(s) for script `resolvconf'

그러나 심볼릭 링크가 생성됩니다.

$ ls /etc/rc?.d/*resolvconf
/etc/rc0.d/K02resolvconf
/etc/rc6.d/K02resolvconf

그런데 왜 이러한 오류가 발생합니까?

답변1

chkconfig "기본 시작" 줄만 읽으세요.스크립트의 런레벨을 계산할 때. 런레벨 수를 계산하고 호출 수만 계산합니다.insserv 하나 이상의 런레벨이 요청된 경우"기본 시작"에서...

이 동작을 방지하기 위한 해결 방법은 다음과 같습니다.

  • 서비스 활성화 chkconfig -a:
  • 서비스 비활성화 chkconfig -d;
  • 직접 사용하여 insserv활성화 insserv service하고 service삭제 insserv -r service하세요.

관련 정보