2014-02-17 1 views
37

일반적인 질문 : 특정 .service가 성공적으로 시작된 후 시스템을 어떻게 시작합니까?특정 서비스 후 시스템 시작 서비스

특정 질문 : mongodb.service를 시작한 후에 만 ​​website.service를 시작하려면 어떻게해야합니까? 즉, website.service는 mongodb.service에 의존해야합니다.

[Unit] 
Description=My Website 
After=syslog.target network.target mongodb.service 

중요한 부분은 맨 페이지는 그것 때문에 첫눈

에 같은 명확하지 않다 서식에 그러나 그것을 설명하는 mongodb.service

경우 : [단위] 섹션에서 .service 파일에서

+1

이 질문은 아니에 Serverfault에 속하는? –

+0

@ Rémi 두 사이트 모두 괜찮습니다! :) –

+1

@AnonymousPenguin 아니요, 답장하기 전에 3.5 년이 흘렀습니다. SO에 대한 주제에 관한 질문이 아닙니다. 프로그래밍에 관한 것이 아닙니다. SF 또는 더 나은, Unix/Linux.SE가 훨씬 더 적절할 것입니다. –

답변

39
+0

mongod 서비스가 매우 큰 데이터베이스를 시작합니다. 후속 서비스는 mongo가 시작한 후에 데이터베이스를로드하는 데 더 많은 시간이 걸리기 때문에 올바르게 시작되지 않습니다. 따라서 두 번째 서비스는 시작되지만 mongo가 성공적으로 시작되었지만 데이터베이스를로드하지 않았기 때문에 실패합니다. 아마 지연이 도움이 될거야 ... – wayofthefuture

16

After= 종속성은 After=을 포함한 서비스와 After=에 포함 된 서비스가 둘 다 부팅 업을 시작할 예정인 경우에만 유효합니다.

예 : a.serviceb.service 모두 을 사용할 경우

a.service 
[Unit] 
After=b.service 

이 방법은, 다음 systemd는 a.serviceb.service를 주문합니다.

내가 오해하지 않는다면 b.service이 활성화되어 있지 않아도 a.service이 시작될 때 b.service을 시작하는 방법을 묻는 것입니다.

Wants= 또는 Requires=[Unit]입니다.

mongodb.service 
[Unit] 
Wants=website.service 
After=website.service 

Wants=Requires=의 차이는 .unit의 매뉴얼 페이지에 설명 - http://www.freedesktop.org/software/systemd/man/systemd.unit.html