어떤 Linux 배포판이 어떤 (기본) 초기화 시스템과 함께 제공되고 서비스 시작/중지를 위해 어떤 도구를 사용하는지에 대한 개요가 있습니까?
서비스를 시작/중지/쿼리하는 배포 독립적인 방법이 있습니까?
/etc/init.d/xyz start
system-v init 시스템에서만 작동합니다.service xyz start
모든 배포판에서 사용할 수 있는 것은 아닙니다. (어떤 배포판에 이 기능이 있습니까?)- 사용 가능한 명령에 따라 케이스를 전환하는 것이 유일하게 신뢰할 수 있는 방법인 것 같습니다.
배경: 서비스를 다시 시작/쿼리해야 하는 다양한 Linux 배포판용 설치 프로그램을 작성해야 합니다. 도구 를 호출하는 service
것이 좋을 것 같지만 어떤 배포판이 이를 지원하는지 잘 모르겠습니다.
답변1
이 서비스를 설치하려는 경우 지원하려는 플랫폼에 대해 초기화 스크립트/구성을 올바르게 작성해야 하므로 각 배포 서비스 관리를 알아야 할 것입니다.
체계화된-
systemctl start xyz.service
Fedora 15+, RHEL7, Arch, Debian 8+, Ubuntu 15+, openSUSE 12.3+갑자기 나타나다-
service xyz start
우분투, 페도라 9+, RHEL6SysV-
/etc/init.d/xyz start
RHEL5, 데비안, 수세오픈RC-
/etc/init.d/xyz start
젠투, 알파인(Net/FreeBSD 지원)SMF-
svcadm enable svc:/prefix/xyz
Solaris, Opensolaris 기반(illumos, smartos 등)rc
/etc/rc.d/xyz start
-BSD출시됨-
launchctl start xyz
OSX
SysV/etc/rc.d/xyz
대부분의 새로운 init 시스템이 계속해서 스크립트를 지원하는 Linux 표준( )이므로 이것이 기본 포인트입니다.
체계화된리눅스가 향하고 있는 곳은 바로 여기다
많은 플랫폼에서 실행될 수 있는 유틸리티는 모르지만 대부분의 구성 관리 소프트웨어는 크로스 플랫폼 서비스 관리를 수행할 수 있습니다. 불행하게도 이는 구성 관리 소프트웨어도 설치해야 함을 의미합니다(또는 최소한 기본 모듈과 런타임 Ruby/Python). 구성 도구에서 설치하는 모든 작업을 수행할 수 있으므로 자신의 컴퓨터에서 설치를 관리하는 경우에는 괜찮습니다. 소프트웨어를 누구에게나 배포하려는 경우에는 좋지 않습니다.
다음 구성 관리 예제는 로컬 기본 서비스 관리자와 상호 작용하고 xyz
아직 실행 중이 아닌 경우 시작됩니다. 더 이상 아무것도 알 필요가 없습니다.
service "xyz" do
action :start
end
service { "xyz":
ensure => "running",
}
- service: name=xyz state=started