저는 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
답변2
내가 찾은 해결책은 다음 코드를 추가하는 것이었습니다.
touch /var/lock/subsys/<scriptname>
etc/rc.d/rc 파일이 K*로 표시된 심볼릭 링크에서 스크립트를 실행하려고 하면 잠금 파일을 찾습니다. 이 파일이 없으면 시스템은 "서비스"가 "실행 중"인지 전혀 알 수 없습니다.