init.d에 있는 서비스 스크립트를 시작 및 종료 시 호출할 수 있습니까?

init.d에 있는 서비스 스크립트를 시작 및 종료 시 호출할 수 있습니까?

저는 Red Hat 5.1을 실행하고 있습니다. chkconfig --add sysinit를 사용하여 서비스로 추가한 sysinit라는 스크립트가 있습니다. 파일에 다음을 설정했습니다.

#chkconfig 4 01 01

그러면 rc4.d 디렉토리에 S01sysinit에 대한 심볼릭 링크가 생성됩니다. 그러나 시작 및 종료 시 스크립트가 실행되기를 원합니다. 무엇을 하든 종료 시 사용자 정의 스크립트(서비스)를 실행할 수 없습니다. 내 기능을 S01에서 실행되는 스크립트와 K01에서 실행되는 스크립트 두 개로 분할하려고 시도했지만 작동하지 않았습니다. 내 스크립트가 수행해야 하는 작업을 수행하기 위해 rc.sysinit 파일을 수정하고 싶지 않습니다(손대면 안 될 것 같습니다). 내가 이 작업을 수행해야 하는 이유는 rc.sysinit 파일이 /opt 디렉토리를 마운트 해제하려고 시도하기 전에 /opt 디렉토리 내의 samba 공유를 마운트 해제해야 하기 때문입니다(지금은 "장치가 사용 중입니다" 오류가 발생합니다. 왜냐하면 cifs 마운트는 여전히 존재합니다).

시작, 종료 및 다시 시작 시 스크립트가 실행될 수 있도록 특별히 수행해야 할 작업이 있습니까? 동일한 실행 수준에서 K01sysinit와 S01sysinit를 사용할 수 있습니까? 아니면 런레벨이 어떻게 작동하는지 오해하고 있습니까?

내 스크립트에는 이미 )start 및 )stop 섹션이 있습니다.

답변1

네, S와 K가 모두 있어야 합니다. K 스크립트는 다음과 같은 상황에서 실행되어야 합니다.떠나다수준이라고 하더군요. 사용할 수 있는 검색어는 '시스템 V 초기화" 또는"삼위 일체".

chkconfig심볼릭 링크가 예상대로 설치되어 있습니까 ?

답변2

내가 찾은 해결책은 다음 코드를 추가하는 것이었습니다.

    touch /var/lock/subsys/<scriptname> 

etc/rc.d/rc 파일이 K*로 표시된 심볼릭 링크에서 스크립트를 실행하려고 하면 잠금 파일을 찾습니다. 이 파일이 없으면 시스템은 "서비스"가 "실행 중"인지 전혀 알 수 없습니다.

관련 정보