어떤 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+, RHEL6시스템 V-
/etc/init.d/xyz start
RHEL5, 데비안, 수세오픈RC-
/etc/init.d/xyz start
젠투, 알파인(Net/FreeBSD 지원)단일 모드 광섬유
svcadm enable svc:/prefix/xyz
-Solaris, Opensolaris(illumos, smartos 등) 기반rc-
/etc/rc.d/xyz start
BSD방사-운영
launchctl start xyz
체제
시스템 V/etc/rc.d/xyz
대부분의 새로운 init 시스템은 계속해서 스크립팅(Linux 표준)을 지원하므로 이것이 출발점입니다.
체계리눅스가 향하는 곳
많은 플랫폼에서 작동하는 유틸리티는 모르지만 대부분의 구성 관리 소프트웨어는 크로스 플랫폼 서비스 관리를 수행할 수 있습니다. 불행하게도 이는 구성 관리 소프트웨어(또는 최소한 기본 모듈 및 런타임 Ruby/Python)도 설치해야 함을 의미합니다. 구성 도구를 통해 모든 작업을 수행할 수 있으므로 자신의 컴퓨터에서 설치를 관리하는 경우 유용합니다. 소프트웨어를 누구에게나 배포하려고 하면 좋지 않습니다.
다음 구성 관리 예제는 로컬 기본 서비스 관리자와 상호 작용하고 xyz
아직 실행 중이 아닌 경우 이를 시작합니다. 더 이상 알 필요가 없습니다.
service "xyz" do
action :start
end
service { "xyz":
ensure => "running",
}
- service: name=xyz state=started