Linux에서 서비스를 시작하고 중지하는 표준 방법이 있습니까?


15

최근까지 서비스를 시작 / 중지 / 다시 시작하는 간단하고 효과적인 방법이있었습니다.

service nginx start|stop|restart

이 때문에 몇 년 동안 완벽하게 작동 ... 일부 스마트 바지를 개선하기로 결정하고 지금은 데비안 / 우분투 시스템과 직면하고 때까지 service나는이 같은 물건을 사용 하죠으로 (스크립트가 아무것도하지 않는 systemctl start nginx.service훨씬 더 (, 자동 완성 작업이 없습니다 ...)

내 질문은 특별히 데비안과 우분투에 관한 것이지만 CentOS / RedHat 배포판을 다루는 것도 도움이 될 것입니다.

그래서,이 운명의 변화로부터 나를 구할 수있는 것이 있습니까?

명확하지 않은 경우 데비안 7.x, 8.x, 최신 Ubuntu LTS 및 비 LTS에서 작동하는 일을 처리하는 일관된 방법을 찾고 있습니다.

추신. 이 특정 질문의 범위를 벗어 났지만 솔루션이 서비스의 활성화 및 비활성화 부분을 다루는 경우 추가로 도움이됩니다.


5
탭 완성은 나를 위해 systemctl을 위해 작동합니다 ... 그리고 그 것처럼, systemd 사실상 사실상의 표준입니다.
jasonwryan

1
추가 : 서비스 명령이 쓸모 없어지면 제거 할 수 있습니까? 어떤 패키지가 제공합니까?
sorin

3
이전 service명령을 servicectl을 호출하는 래퍼 로 바꾸는 것이 합리적이지 않습니까?
sorin

4
예 @jasonwryan,하지만 당신은 할 수 단지 , 그리고 래퍼는 누구나 systemd 부드러운로의 전환을, 그것을 처리 할 수 있습니다.
Dmitry Grigoryev

2
않습니다 service정말 당신을 위해 아무것도하지? 내 LMDE (기본적으로 데비안 테스트)에서 예상대로 작동하지만 LMDE 관련 사항이라고 생각하지 않았습니다. 또한 우분투 VM에서 예상대로 작동합니다.
terdon

답변:


6

얽힌 역사를 통해 유닉스 플랫폼에는 다양한 부트 및 서비스 제어 시스템이 있습니다.

service\chkconfig찾은 기반 시스템 간단하고 효과적인는 일반적이라고 SysVinit에서의 스타일과 표준화의 일종으로 길을 따라 중요한 단계였다. RHEL / CentOS (EL)에서 6 릴리스까지, Fedora에서 14까지 그리고 2015 년까지 데비안 / 우분투 기반 배포판에서 이러한 부팅 스타일을 찾을 수 있습니다.하지만 (간단한) BSD 스타일의 유일한 부팅 시스템은 아니 었습니다. init 시스템에는 여전히 많은 팬이 있습니다.

SysVinit는 완벽한 솔루션이 아니며 (무엇입니까?) Systemd 는 많은 문제를 극복하기 위해 고안되었습니다. 이것이 systemctl현재 경험 하고있는 명령 기반 시스템입니다. 보편적으로 좋아하지는 않지만 (사람들은 변화, 팽창 등을 싫어합니다) 대다수의 배포판에서 사실상 표준이되고 있다는 것은 의심의 여지가 없습니다.

따라서 원래 질문에 대한 답변을 즉시 기대하면됩니다. 대부분의 Linux 배포판에서 서비스를 제어
하는 표준 방법 은 이제 ! systemctl
이것이 얼마나 오래 지속될지는 누구나 추측 할 수 있습니다. 아마도 무언가가 나올 때까지 더 좋으며 널리 채택 될 것입니다.

나는 당신이 현재 좋아하는 service/chkconfig것, 대부분 제정신을 계속 하는 명령 을 허용하는 래퍼가있을 것이라고 확신 하지만,이 특별한 학습 곡선을 사용하면 싸울 수없는 것이 가장 좋습니다. 어쩌면 systemctl더 오래된 시스템을 위해 래퍼 가있을 것입니다. 현재 시스템과 함께 관리하면 고통을 덜 수 있습니다.)


그리고 이것이 xinetd 이전이고, 그 이전에는 inetd였습니다
jas-

@ jas- inetd가 실제로는 서비스라고 생각합니다. 모든 부트 시스템 내에 존재할 수 있다고 생각합니다. 이 서비스는 다른 서비스가 온 디맨드 서비스를 제공하여 전체 서비스로 실행 하는 대안 을 제공한다는 점에서 특별한 종류의 서비스입니다 . 서비스를 시작하는 또 다른 방법이지만이 Q와 관련하여 어디에서 왔는지 이해합니다.
DanSut

모든 배포판에서; 젠투, 센 토스, 레드햇, 데비안, 우분투 등, xinetd 및 이전에 inetd는 다양한 서비스에 대한 구성을 시작, 중지 및 다시로드하는 작은 쉘 스크립트로 구성되었지만 실제로 시스템과 같은 서비스였습니다.
jas-

우분투는 6.10 이후 신출내기 사용 페도라 이후 9 (그들은 systemd에 의해 대체 될 때까지) upstart.ubuntu.com , 꽤 몇 년 동안 Sysvinit의에서 멀리 데비안을 전환 할 수 지났는데 ...
제임스 Tocknell

5

이전 service명령을 servicectl대신 [sic] 을 호출하는 래퍼 로 바꾸는 것이 합리적이지 않습니까?

그렇습니다. 그러나 […] 랩퍼가이를 처리하여 사용자에게보다 체계적으로 전환 할 수 있습니다.

… 다른 사람들이 의견에서 말했듯이, 그 이후로 오랫동안 행해지고있는 일입니다 .

/usr/sbin/serviceDebian 8 의 명령은 sysvinit-utils 패키지의 일부입니다. 그것은 원래 Sysvinit의 소스 패키지에 대한 데비안 고유의 레드햇 유래 또한, 그리고 스크립트를 읽고에서 볼 수 있듯이 그것은에 명령을 농업, systemd 실행 및 신출내기 작업의 존재를 모두 인식하고 2009 년부터있어왔다 systemctlinitctl( 별명을 통해). 2013 년 이래로 이루어졌습니다.

service name actionLinux 이외의 운영 체제에서도 매우 광범위하게 사용할 수 있습니다. 그들 자신의 service명령을 가지고 있기 때문에 대부분의 BSD에서도 작동 합니다. servicenosh 패키지에는로 번역 되는 shim 명령 도 있습니다 . 그러나…system-control action name

  • …이 공통 부분 집합을 넘어 서면 호환성이 훨씬 떨어집니다.
  • … OpenBSD에는 service명령 이 없습니다 .
  • … BSD service명령은 오랫동안 시스템 관리자가 수십 년 동안 전쟁 이야기를 해왔 던 문제로 잘 알려져 있습니다.

서비스 활성화 및 비활성화는 비슷한 상황입니다. 수세에 있지만 chkconfig공통의 최소한의 존재, - (데비안과 우분투 패키지 사용 가능) 프로그램은 페도라 것과 매우 다르다 (하나 하나의 해석, 컴파일 그들은 심지어, 완전히 다른 프로그래밍 언어로 기록되는) 구문으로, 동작이 되고 또는 . 그러나…chkconfig name actiononoff

  • … 다시,이 공통 부분 집합을 넘어 호환성이 떨어집니다.
  • chkconfig이것에 대한 기존의 도구는 sysrc최신 OpenBSD rcctl enable및 이므로 BSD 에는 없습니다 rcctl disable. 있다 chkconfigrcctl요기 패키지에 심 번역 할 것을 하고 .system-control enable namesystem-control disable name
  • ... 단지 페도라는 chkconfigsystemd에 대해 알고있는과에 대한 심 역할을 systemctl enable하고 systemctl disable. SuSE chkconfig는 체계적인 지식이 없습니다.

추가 자료


2

Linux에서 서비스를 시작하고 중지하는 표준 방법은 없습니다.

이 운명의 변화로부터 나를 구할 수있는 것이 있습니까?

구성 관리 / 오케스트레이션 도구 ( Ansible , Chef , Saltstack , Puppet 등)를 사용해보십시오 .

Ansible을 사용하여 서비스를 시작하고 활성화 할 수 있습니다.

ansible all -i inv -m service -a 'name=service-name state=started enabled=true'

Ansible의 모듈 에서 LinuxService 클래스 를 살펴보십시오 service.

이것은 Linux 서비스 조작 클래스입니다. 현재 부팅시 시작된 서비스를 제어하고 현재 상태를 제어하기 위해 바이너리와 init 스크립트를 혼합하여 지원합니다.


어떻게 든 우분투 사람들은 systemd로 전환 한 후 서비스 스크립트를 계속 작동시킬 수 있었던 것 같습니다. 내부를 살펴보면 올바른 백엔드를 사용할만큼 똑똑한 것 같습니다. 데비안에 대해서도 똑같이 말할 수 없습니다.
sorin



1

문제는 데비안 / 우분투가 systemd이전 버전을 대체 하여 새 버전 으로 전환했다는 것 sysvinit입니다. 어느 쪽이 더 좋은지 물어보고 화염 전쟁을 시작할 수 있지만 sysvinit, 항상 이전 으로 돌아갈 수 있습니다. 되돌아 가려면 이것을 확인하십시오 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.