추가 읽기

추가 읽기

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

service nginx start|stop|restart

이것은 배포판이 systemd로 전환될 때까지 몇 년 동안 잘 작동했으며 이제 스크립트가 아무 작업 service도 수행하지 않는 Debian/Ubuntu 시스템에 직면했습니다. systemctl start nginx.service완료,...)

내 질문은 특히 Debian 및 Ubuntu와 관련이 있지만 CentOS/RedHat 배포판을 다루는 것도 도움이 될 것입니다.

확실하지 않은 경우 이러한 문제를 처리할 수 있는 일관된 방법, 즉 Debian 7.x, 8.x, 최신 Ubuntu LTS 및 비 LTS에서 작동하는 방법을 찾고 있습니다.

추신. 이 특정 질문의 범위를 벗어나지만 솔루션이 서비스의 활성화 및 비활성화 부분도 다룬다면 추가적인 칭찬을 받을 것입니다.

답변1

유닉스 플랫폼에는 다양한 부팅 및 서비스 제어 시스템이 등장했습니다.

service\chkconfig당신이 찾은 기본 시스템간단하고 효과적입니다.일반적으로 불린다시스템 초기화스타일이며 일종의 표준화를 향한 중요한 단계입니다. 이 부팅 방법은 RHEL/CentOS(EL) 버전 6부터, Fedora부터 14까지, 2015년 이전의 Debian/Ubuntu 기반 배포판에서 찾을 수 있습니다. 그러나 (더 단순한) BSD 스타일 부팅 시스템은 여전히 ​​많은 팬을 갖고 있는 init 시스템 중 유일한 것은 아닙니다.

SysVinit은 완벽한 솔루션이 아닙니다(무엇입니까?)체계많은 문제를 극복하도록 설계되었습니다. 이것이 systemctl현재 경험하고 있는 명령 기반 시스템입니다. 보편적으로 인기가 있는 것은 아니지만(사람들은 변화, 팽창 등을 싫어함) 대부분의 배포판에서 사실상의 표준이 빠르게 자리잡고 있다는 점에는 의심의 여지가 없습니다.

따라서 즉시 예상되는 원래 질문에 대한 대답은 간단합니다.
이것기준교차 서비스를 제어하는 ​​방법최대이제 Linux 배포판을 사용할 수 있습니다 systemctl!
이것이 얼마나 오래 지속될지는 누구나 추측할 수 있습니다. 어쩌면 뭔가 나올 때까지더 나은 것널리 채택되었습니다.

현재 즐겨 사용하는 명령이 대부분의 정상적인 작업을 계속 수행할 수 있도록 하는 래퍼가 있을 것이라고 확신 service/chkconfig하지만 이 특정 학습 곡선에서는 이에 맞서지 않는 것이 가장 좋습니다. 아마도 앞으로는 systemctl한동안 기존 시스템에 대한 래퍼가 있어서 최신 시스템과 함께 관리하는 것이 덜 고통스러울 것입니다.)

답변2

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

예, 하지만 [...] 래퍼가 이를 처리할 수 있으므로 사용자가 보다 원활하게 systemd로 전환할 수 있습니다.

...다른 사람들이 댓글에서 말했듯이,오랫동안 해왔던 일들.

Debian 8의 명령은 /usr/sbin/servicesysvinit-utils 패키지의 일부입니다. 2009년부터 있었습니다. 이는 원본 sysvinit 소스 패키지에 대한 Debian 관련 RedHat 파생 추가 항목이며, 스크립트를 읽으면 알 수 있듯이 systemd 실행 및 upstart 작업의 존재를 인식하고 각각 명령을 systemctlinitctl(별칭을 통해) 아웃소싱합니다. 2013년부터 이 일을 해왔습니다.

service name actionLinux가 아닌 운영 체제에서도 매우 광범위하게 사용할 수 있습니다. 자체 service명령이 있기 때문에 대부분의 BSD에서도 작동합니다. servicenosh 패키지에는 다음으로 변환되는 shim 명령도 있습니다.system-control action name

  • …이 공통 하위 집합 외에는 호환성이 훨씬 적습니다.
  • … OpenBSD에는 명령이 없습니다 service.
  • … BSD service명령에는 시스템 관리자가 수십 년 동안 이야기해온 오래되고 잘 알려진 문제가 있습니다.

서비스 활성화 및 비활성화는 비슷합니다. SuSE chkconfig프로그램(Debian 및 Ubuntu용 패키지로 사용 가능)은 Fedora 프로그램과 매우 다르지만(완전히 다른 프로그래밍 언어로 작성되었으며 하나는 컴파일되고 하나는 해석됨) 공통된 최소 구문에는 한 가지가 있습니다.chkconfig name action행동예 , on하지만 off

  • …다시 말하지만, 이 공통 하위 집합을 넘어서면 호환성이 좋지 않습니다.
  • chkconfig...이 목적을 위한 전통적인 도구는 sysrc최신 OpenBSD rcctl enable이고 nosh 패키지에는 및 로 변환되는 shim이 rcctl disable있기 때문에 BSD에는 없습니다.chkconfigrcctlsystem-control enable namesystem-control disable name
  • ...Fedora만이 systemd에 대해 알고 있으며 및 에 대한 심 역할을 합니다 chkconfig. SuSE는 systemd를 이해하지 못합니다.systemctl enablesystemctl disablechkconfig

추가 읽기

답변3

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

이 피할 수 없는 변화로부터 나를 구원할 수 있는 것이 있습니까?

구성 관리/조정 도구를 사용해 보세요.안시푸르,요리사,소금 더미,인형무슨 상관이야.

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

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

보세요리눅스 서비스 클래스안시푸르에서service기준 치수:

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

답변4

문제는 Debian/Ubuntu가 systemd이전 버전을 대체하기 위해 새 버전 으로 전환했다는 것입니다 sysvinit. 어느 것이 더 나은지 물어보면 큰 전쟁이 시작될 것입니다. 하지만 언제든지 이전 것으로 전환하여 sysvinit확인해 보세요.이것돌아가고 싶다면.

관련 정보