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


113

나는 한동안 우분투의 맛을 켜고 끄는 서버 설치를 /etc/init.d/관리해 왔습니다. 이제이 메시지가 나타납니다.

root@tatooine:~# /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/?


3
갑자기 출세 한 요리 책 전환에 대한 합리적인 좋은 설명이 포함되어 있습니다.
ændrük

답변:


103

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

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

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


6
이제 스타트 업이 단계적으로 폐지 될 것입니까?
wrongusername

6
계획이 수립되면 systemd는 가동을 대체합니다-14.04 LTS는 가동을 사용합니다. 이것은에 의해 발표 된 마크 셔틀 워스 (Mark Shuttleworth) 라는 제목의 게시물에, 기꺼이지는
하지 패치

28

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

service예측 가능한 환경에서 스크립트를 실행합니다 (작업 디렉토리는 /이고 두 개의 환경 변수 만 설정 됨 : LANG 및 TERM). 또한 할 수있는 기능을 추가합니다 --full-restart. 요약하자면 다음과 같습니다.

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

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


2
안녕하세요 @ 조 마티, 이것은 지금 실험하고있는 문제입니다. "service myservice start"로 데몬을 시작할 때 존재하지 않지만 "/etc/init.d/myservice start"로 시작할 때 존재하는 "DISPLAY"환경 변수를 중계하는 서비스가 있습니다. 이 변수를 사용할 수있는 방법에 대한 아이디어가 있습니까?
frandevel
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.