이 문제는 한동안 저를 괴롭혔습니다. 우리는 솔라리스에서 서비스로 잘 관리되는 프로그램을 실행하고 있습니다.단일 모드 광섬유, 쉽게 활성화/비활성화할 수 있습니다.
이제 우리 시장에 따르면 이 서비스를 RHEL 6.3으로 마이그레이션하려고 하므로 Upstart를 사용하여 이를 관리하고 Solaris에서와 동일하게 작동하도록 만들려고 합니다. 대부분의 동작은 양호하고 요구 사항을 충족하지만 서비스를 중지해도 부팅 시 자동으로 시작되는데 이는 우리가 원하는 것이 아닙니다. 서버를 중지한 후 서버를 몇 번 다시 시작하거나 종료하더라도 서버가 중지되기를 원합니다.
이 글을 읽었는데,Ubuntu 12.04: 시작 시 데몬을 비활성화하는 방법, 이 기능은 Upstart 1.3을 사용하여 수행할 수 있다고 나와 있지만 Upstart 패키지 버전이 0.6.7인 RHEL 6.3만 사용할 수 있으며 가장 중요한 것은 Upstart를 업그레이드하거나 다른 플랫폼으로 전환할 수 없다는 것입니다. :(
따라서 내 질문은 다음과 같습니다. 내 목표를 달성할 수 있는 다른 방법이 있습니까? 하지만 시스템을 변경하지 않고 종속성을 도입하지 않으며 서비스는 여전히 시스템에서 관리되어야 합니다(예: SMF/Upstart/init.d).
여기에는 한 가지 요구 사항이 더 있습니다. 사용자가 서비스 프로세스를 종료하면 시스템이 이를 감지하고 자동으로 상한 횟수만큼 프로세스를 시작하려고 시도하는 기능을 구현하고 싶습니다. 지정.
SMF 참조:
Oracle Solaris 11의 SMF(서비스 관리 기능) 기본 사항 소개 Oracle Solaris 11에서 SMF(서비스 관리 기능)를 사용한 고급 관리
답변1
ReHat과 같은 rpm 기반 시스템에서 chkconfig
런레벨을 구성하는 데 사용됩니다. service
실행 중인 시스템에서 처리됩니다.
RH 6에서 서비스를 영구적으로 중지하려면:
service xyz stop
chkconfig xyz off
SMF는 그보다 훨씬 더 복잡합니다. 모니터링, 재시작 등의 작업을 수행하므로 일반적으로 클러스터 소프트웨어에서 수행하는 작업을 수행하는 것으로 보입니다.
클러스터 소프트웨어에서는 일반적으로 시스템 제어에서 서비스를 가져와 클러스터 제어에 제공합니다. 이 서비스는 클러스터가 시작될 때 시작됩니다.
다음과 같은 명령이 나타날 수 있습니다.
- 서비스 중지(한 번 또는 영구적으로)
- 모니터링 서비스만
- 모니터가 예기치 않은 작동 중지 상태를 반환하는 경우 정상적인 클러스터 동작으로 인해 서비스가 다시 시작될 수 있습니다.
전체 클러스터 제품군을 추가하지 않으려는 경우 취할 수 있는 몇 가지 해결 방법이 있습니다.
- 서비스를 중지하고 계획된 가동 중지 시간 플래그를 적중하려면 init 스크립트에 "pstop" 메소드를 추가하세요.
- 서비스를 모니터링하고 서비스가 실패하고 계획된 가동 중지 시간 내에 있지 않은 경우 서비스를 다시 시작하는 크론 작업을 작성합니다.
- 계획된 가동 중지 시간 플래그가 있는 경우 제거되도록 init 스크립트의 "start" 메서드를 수정합니다.
답변2
RHEL로 마이그레이션하려면 다음을 사용하세요.RHEL 매뉴얼참고로 - Ubuntu의 Upstart 문서를 읽어도 그다지 도움이 되지는 않습니다. Init 시스템은 Linux 배포판의 핵심 부분 중 하나이며 배포판 자체의 필수적인 부분입니다. 다양한 공급업체가 일정 수준의 호환성을 달성하기 위해 노력하는 경우가 많지만 다른 배포판에 대한 설명서를 읽는 것은 좋은 생각이 아닙니다(특히 다른 UNIX 시스템에서 마이그레이션하는 경우).
RHEL은 SysV init 호환 모드에서 upstart를 사용하므로 이 명령을 인식할 수 있습니다 service
. 그런데 입력해 보세요.RHEL 서비스 관리즐겨찾는 검색 엔진을 입력하세요. 그러면 합리적인 읽기 자료가 충분히 제공될 것입니다.