최근까지 서비스를 시작/중지/다시 시작하는 간단하고 효율적인 방법이 있었습니다.
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/service
sysvinit-utils 패키지의 일부입니다. 2009년부터 있었습니다. 이는 원본 sysvinit 소스 패키지에 대한 Debian 관련 RedHat 파생 추가 항목이며, 스크립트를 읽으면 알 수 있듯이 systemd 실행 및 upstart 작업의 존재를 인식하고 각각 명령을 systemctl
및 initctl
(별칭을 통해) 아웃소싱합니다. 2013년부터 이 일을 해왔습니다.
service name action
Linux가 아닌 운영 체제에서도 매우 광범위하게 사용할 수 있습니다. 자체 service
명령이 있기 때문에 대부분의 BSD에서도 작동합니다. service
nosh 패키지에는 다음으로 변환되는 shim 명령도 있습니다.system-control action name
- …이 공통 하위 집합 외에는 호환성이 훨씬 적습니다.
- … OpenBSD에는 명령이 없습니다
service
. - … BSD
service
명령에는 시스템 관리자가 수십 년 동안 이야기해온 오래되고 잘 알려진 문제가 있습니다.
서비스 활성화 및 비활성화는 비슷합니다. SuSE chkconfig
프로그램(Debian 및 Ubuntu용 패키지로 사용 가능)은 Fedora 프로그램과 매우 다르지만(완전히 다른 프로그래밍 언어로 작성되었으며 하나는 컴파일되고 하나는 해석됨) 공통된 최소 구문에는 한 가지가 있습니다.chkconfig name action
행동예 , on
하지만 off
…
- …다시 말하지만, 이 공통 하위 집합을 넘어서면 호환성이 좋지 않습니다.
chkconfig
...이 목적을 위한 전통적인 도구는sysrc
최신 OpenBSDrcctl enable
이고 nosh 패키지에는 및 로 변환되는 shim이rcctl disable
있기 때문에 BSD에는 없습니다.chkconfig
rcctl
system-control enable name
system-control disable name
- ...Fedora만이 systemd에 대해 알고 있으며 및 에 대한 심 역할을 합니다
chkconfig
. SuSE는 systemd를 이해하지 못합니다.systemctl enable
systemctl disable
chkconfig
추가 읽기
- "sysvinit-utils: 파일 목록 다운로드". sysvinit-utils 패키지. 데비안 8 패키지.
script/service
. 시스템 도우미를 초기화합니다. 데비안 소스 코드 아카이브.- 조나단 데보인 폴라드(2015).
telinit
. 스낵 가이드. 1.20.JdeBP 소프트웨어. - 조나단 데보인 폴라드(2015).
service
더 이상 명령에 문제가 없습니다.. 스낵 페이지. JdeBP 소프트웨어. - chkconfig 패키지. 데비안 8 패키지.
- "chkconfig 명령을 systemd와 함께 사용할 수 있습니까?".체계. 페도라 프로젝트 위키.
- "서비스 명령을 systemd와 함께 사용할 수 있나요?".체계. 페도라 프로젝트 위키.
- 더글라스 패튼(2012-12-11).
service
. §8. FreeBSD 매뉴얼 페이지. - 앙투안 자큐토(2014-08-19). rc.conf.local(8)을 유지 관리하기 위한 간단한 유틸리티인 rcctl(8)을 소개합니다.. OpenBSD CVS.
- 조나단 데보인 폴라드(2015). 스낵백. JdeBP 소프트웨어.
답변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
확인해 보세요.이것돌아가고 싶다면.