Linux 서비스 시작 / 부팅 순서를 변경하는 방법은 무엇입니까?


답변:


11

/etc/rcX.d/에서 심볼릭 링크의 이름을 바꾸어 순서를 변경할 수 있습니다. 여기서 x는 실행 레벨입니다.

Sxx 또는 Kxx로 시작하는 많은 파일이 표시됩니다. K 링크는 종료 중에 구문 분석되는 동안 S 링크는 시작 중에 추적됩니다. 여기서 xx는 순서를 나타냅니다.

그러나이 순서는 이유가 있으므로 변경하는 동안주의하십시오 (예 : ntpd는 네트워킹 하위 시스템이 초기화 된 후에 만 ​​시작해야합니다.


21

다른 답변에서 제안한 것처럼 수동으로 수행하는 대신 init 스크립트를 변경할 수도 있습니다. 헤더에 다음 줄을 추가하십시오.

# chkconfig: 35 90 10

chkconfig시작 위치가 90이고 종료 위치가 10 인 실행 레벨 3과 5에 서비스를 추가하도록 지시 합니다.


이. 물론입니다. 수동으로 심볼릭 링크의 이름을 바꾸면 사람을 따라 실행 오면 당신은 깜짝 놀랄거야chkconfig off servicename && chkconfig on servicename
batfastad

매력처럼 일했다. mysqld와 서블릿 컨테이너 간의 종속성을 구성해야했습니다. mysqld의 시작 위치를 알 수 없으므로 서블릿 컨테이너의 시작 위치를 99로 구성했으며 제대로 작동하면 mysqld가 먼저 시작됩니다. 감사.
jpangamarca 2016 년

7

runlevels 및 rc.d 디렉토리 에 대해 약간 읽으려고합니다 . rc.d 디렉토리에서 S20apache K10apache와 같은 S 및 K 링크를 찾을 수 있습니다. 기본적으로 스크립트 시작 / 종료를 지시합니다.

이 아키텍처에는 약간의 변화가 있지만 대부분의 리눅스는 여전히 그것을 사용하고 있습니다.


나는 대부분의 배포판이 여전히이 시스템을 사용한다는 것에 놀랐습니다. 더 나은 시스템 rcorder은 잠시 동안 주변에 있었다.
Chris S

나는 좀 솔라리스를 부러워 svc하지만, XML 물건없이 할 수
코어 덤프

이 자리에 있습니다. 그러나 배포판에 따라이 값을 변경하는 다른 방법이있을 수 있으므로 배포판에 대한 특정 설명서를 읽으십시오.
Andrew M.

1
Ubuntu와 같은 일부 배포판은 Upstart ( Wikipedia )를 사용합니다.
추후 공지가있을 때까지 일시 중지되었습니다.

7

여기에 도착하면 하나는 다른 하나에 의존하지만 두 가지 서비스가있을 수 있습니다.하지만 잘못된 순서로 시작하기 때문에 종속성이있는 서비스가 시작되지 않습니다. 심볼릭 링크 편집에 대한 제안은 시작 시퀀스가 ​​실행되는 방법을 설명하는 데 도움이되며 누군가가 서비스에서 "chkconfig on"을 수행 할 때까지 정상적으로 작동합니다. 실제로 init 스크립트 수준에서 문제를 처리하려고합니다. 실제로는 어지럽 지 않습니다. 또한 서로 다른 런레벨에서 일관됩니다. 이미 비슷한 줄이있을 것이므로 답변 4에서 제안한대로 "# chkconfig"줄을 추가하지 않아도됩니다.

MySQL 데이터베이스 백엔드 (mysqld)와 함께 Openldap (slapd)을 실행하는 서버의 예를 사용하겠습니다. 해당 쌍을 구성하고 원하는 이유는 완전히 다른 이야기입니다.

부팅시 Openldap은 MySQL에 의존하고 시작 시퀀스가 ​​시작되기 전에 시작하려고 시도하므로 slapd는 27이고 mysqld는 64입니다

/etc/rc3.d/의 관련 심볼릭 링크는

S27slapd -> ../init.d/slapd 
and
S64mysqld -> ../init.d/mysqld

두 개의 init 스크립트에서 설정된 값을 찾습니다.

[root ~]# grep chkconfig /etc/rc.d/init.d/mysqld
# chkconfig: - 64 36

[root ~]# grep chkconfig /etc/rc.d/init.d/slapd
# chkconfig: - 27 73 

시작 위치가 /etc/rc.d/init.d/mysqld에있는 것보다 높도록 /etc/rc.d/init.d/slapd의 chkconfig 줄을 편집했습니다 (85를 선택했습니다)

[root ~]# grep chkconfig /etc/rc.d/init.d/slapd
# chkconfig: - 85 73

"chkconfig slapd on"을하고 심볼릭 링크를 다시 확인합니다

[root ~]# chkconfig slapd on
[root ~]# ls -l /etc/rc3.d/ | grep mysqld
lrwxrwxrwx  1 root root 16 Dec 10 13:45 S64mysqld -> ../init.d/mysqld
[root ~]# ls -l /etc/rc3.d/ | grep slapd
lrwxrwxrwx  1 root root 15 Apr 28 14:18 S85slapd -> ../init.d/slapd

이제이 서버가 시작되면 mysqld가 slapd 전에 시작되고 모든 것이 세계와 맞습니다.

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