내 애플리케이션에 대한 서비스를 만들었고 부팅 시 애플리케이션이 시작되기를 원합니다. 서비스 매니페스트에 속성(enabled="true")이 있다는 것을 알았지만 특히 짜증나는 이 측면은 피했습니다.
가져오기는 스크립트의 일부입니다. 서비스를 "활성화"로 설정하면 가져오기 시 다시 시작됩니다. 문제는 계속하기 전에 프로세스가 활성화될 때까지 기다리는 방법을 잘 모르겠다는 것입니다. 그래서 제가 스크립트에서 수행한 작업은 활성화를 "false"로 설정한 다음 "svcadm 활성화 -s <service>
"를 실행하는 것이었습니다.
그래서 다음 질문에 대한 답변을 갖고 있는 분이 있는지 궁금합니다.
- 부팅 시 기존 서비스를 시작하려면 어떻게 해야 합니까? (rc3.d에 수동으로 추가하는 것을 방지할 수 있기를 바랍니다.)
- 계속하기 전에 서비스가 완전히 활성화될 때까지 svccfg 가져오기를 기다리게 하려면 어떻게 해야 합니까?
- 계속하기 전에 서비스가 시작될 때까지 기다리는 우아한 방법이 있습니까(루프에서 수동으로 활성화하는 것을 피함)?
감사해요.
답변1
Solaris SMF에 대한 귀하의 질문에 답변해 드리겠습니다...
부팅 시 서비스를 시작하려면 서비스를 활성화하기만 하면 됩니다.
# svcadm enable FRMI
예를 들어 "ipfilter" 서비스를 활성화하려면 다음이 필요합니다.
# svcadm enable ipfilter
이는 현재 마일스톤에서 활성화되므로
/etc/rcX.d
디렉터리를 변경할 필요가 없습니다.다른 frmi를 기다리기 위해 가져오기 프로세스가 필요한 이유를 이해할 수 없습니다. 그러나 일반적으로 "매니페스트"를 가져온 다음 온라인에 넣습니다
svcadm
.# svccfg validate MANIFEST # svcadm enable FRMI
다른 frmi를 기다리려면 아래와 같이 매니페스트에서 "종속성" 옵션을 사용할 수 있습니다.
<dependency name='filesystem-local' grouping='require_all' restart_on='none' type='service'> <service_fmri value='svc:/system/filesystem/local:default' /> </dependency>
내 블로그(스페인어)에는 Solaris SMF를 설치하고 사용하는 방법에 대한 많은 예가 있습니다. 예를 들어 여기에서 예를 볼 수 있습니다. OpenIndiana에 PostgreSQL 9.0.3을 설치하는 방법또는RBAC 및 SMF를 사용하여 OpenIndiana에 Apache Tomcat을 설치하는 방법
답변2
아직 활성화되지 않은 다른 서비스에 서비스를 종속시켜 이 문제를 해결할 수도 있습니다.