Debian 8.5 시스템에서 MongoDB를 실행하려고 합니다. 패키지(percona.com에서 미리 빌드됨)를 설치했을 때 다음 파일을 발견했습니다.
/etc/init.d/mongod (1)
/lib/systemd/system/mongod.service (2)
나는 그것이 /etc/init.d/mongod
전달되는 한 시작 시 또는 다른 특정 시스템 상태에서 호출될 것이라는 것을 알고 있습니다 update-rc.d
. 이것은 나에게 완벽하게 작동합니다. 이 스크립트는 mongo 데몬을 초기화하고 시작합니다. 시작, 중지, 다시 시작 등에 대한 "트리거"가 있는 것으로 보이며 내가 알 수 있는 한 sudo service mongod <action>
.
/lib/systemd/system/mongod.service
동일한 작업을 수행하는 것 같지만(예: mongo 실행) 구성이 더 적습니다. ExecStart 매개변수에 한 줄만 있으면 됩니다.
[Unit]
Description=MongoDB (High-performance, schema-free document-oriented database)
After=time-sync.target network.target
[Service]
Type=forking
User=mongod
Group=mongod
PermissionsStartOnly=true
EnvironmentFile=/etc/default/mongod
ExecStart=/usr/bin/env bash -c "/usr/bin/mongod $OPTIONS > ${STDOUT} 2> ${STDERR}"
PIDFile=/var/run/mongod.pid
[Install]
WantedBy=multi-user.target
내가 이해하는 한, 이는 sudo systemctl start mongod
.
시작 시 호출되는지 이해가 되지 않습니다.
두 개의 "서비스" 파일이 필요한 이유와 그 중 하나(아마도 /lib/systemd에 있는 파일이 훨씬 간단하므로)를 제거하는 방법을 이해하지 못합니다.
둘 사이에 어떤 관계가 있는지 이해가 되지 않습니다.
systemctl
스크립트 에서도 작동한다는 것을 읽었는데init.d
, 이 경우 두 파일 중 어느 파일이systemctl mongod start
.
나생각하다약간의 중복이 있으므로 두 가지 방법 중 하나만 선택해야 합니다. 나는 그것이 맞는지 확인하고 싶다.
- 시작 시 호출됨
- 명령(예:
service
또는systemctl
)을 통해 호출할 수 있습니다.
내 마음을 비우도록 도와주실 수 있나요?
답변1
이름이 같은 스크립트와 시스템 파일이 모두 있으면 init.d
systemd는 모든 작업에 서비스 파일을 사용합니다. .service
나는 service
명령이 systemd로만 리디렉션된다고 생각합니다. init.d 스크립트는 무시됩니다.
사용 systemd
. 데비안 8의 새로운 기능이지만 기본 설정입니다. 시스템 서비스 파일은 다음과 같습니다.~해야 한다init.d 스크립트보다 간단해 보입니다. systemd 서비스가 필요한 특정 기능을 지원하지 않는다고 언급하지 않았습니다.
서비스 파일이 포함되어 있지 않으면 systemd
init.d 스크립트가 사용됩니다. 그래서 mongod 패키지 개발자는 이 systemd 정의가 더 좋다고 생각한다고 말합니다 :).
출력을 살펴보십시오 systemctl status mongod
. 부팅 시 서비스가 시작되도록 활성화된 경우 해당 Loaded:
줄은 "Enabled"로 표시됩니다. 그렇지 않으면 systemctl enable mongod
이 옵션을 포함할 수도 --now
있으며 동시에 mongod가 시작됩니다.