Debian Wheezy의 LSB Init 스크립트에서 이상한 동작이 발생했습니다. 다음 예를 통해 문제를 보여줄 수 있습니다.
스크립트는 실행 수준 및 에서 /etc/init.d/resolvconf
시작되고 중지됩니다 S
.0
6
# 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
하세요.