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

제목에서 분명한 질문에 Linux 서비스 시작 / 부팅 순서를 어떻게 변경합니까?



답변

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

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

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


답변

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

# chkconfig: 35 90 10

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


답변

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

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


답변

여기에 도착하면 하나는 다른 하나에 의존하지만 두 가지 서비스가있을 수 있습니다.하지만 잘못된 순서로 시작하기 때문에 종속성이있는 서비스가 시작되지 않습니다. 심볼릭 링크 편집에 대한 제안은 시작 시퀀스가 ​​실행되는 방법을 설명하는 데 도움이되며 누군가가 서비스에서 “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 전에 시작되고 모든 것이 세계와 맞습니다.


답변