it-swarm-ko.tech

"서비스"와 "/etc/init.d/"의 차이점은 무엇입니까?

나는 한동안 우분투의 온/오프 서버 설치를 관리해왔다.-서비스 재시작을 위해 /etc/init.d/로 꽤 조정되었다. 이제이 메시지가 나타납니다.

[email protected]:~# /etc/init.d/mysql status
Rather than invoking init scripts through /etc/init.d, use the service(8)
utility, e.g. service mysql status

Since the script you are attempting to invoke has been converted to an
Upstart job, you may also use the status(8) utility, e.g. status mysql
mysql start/running, process 14048

이것은 Ubuntu의 최신 LTS에서 가져온 것으로 보입니다. 왜 그렇습니까? /etc/init.d/의 문제점과 service/etc/init.d/의 차이점은 무엇입니까?

113
Marco Ceppi

/etc/init.d 스크립트는 옛날 방식입니다. 그것들은 System V 표준에서 나왔습니다. 그러나 이러한 스크립트는 특정 순서로만 실행되므로 실제 종속성을 설정할 수 없습니다.

따라서 upstart는 모든 /etc/init.d 스크립트를 upstart 스크립트 (/etc/init)로 대체하기 위해 개발되었습니다.

service을 사용하면 /etc/init.d 스크립트에서 시작 스크립트로 부드럽게 전환 할 수 있습니다. 앞으로 점점 더 많은 스크립트가 가동 될 때 서비스는 두 가지 가능성을 모두 발견하기 때문에 여전히 작동합니다.

103
txwikinger

서비스 명령에 대한 매뉴얼 페이지도 확인하십시오 : man service

service은 예측 가능한 환경에서 스크립트를 실행합니다 (작업 디렉토리는 /이고 환경 변수는 LANG 및 TERM). 또한 --full-restart를 수행하는 기능이 추가되었습니다. 요약하자면 다음과 같습니다.

  1. service은/etc/init 또는 /etc/init.d (시작 또는 시스템 V)에서 스크립트를 실행할 수 있습니다
  2. service은 예측 가능한 환경에서 스크립트를 실행합니다.

스크립트가 어떤 이유로 환경 변수에 의존하는 경우 "예측 가능한 환경"측면에서 문제가 발생할 수 있습니다. 아마 그 문제를 해결할 수있는 방법이 있지만 그것이 무엇인지 모르겠습니다.이 질문의 범위를 벗어납니다 :)

28
Joe Marty