我正在尝试在 Debian 8.5 机器上运行 MongoDB。当我安装这个包(从 percona.com 预先构建)时,我注意到以下文件:
/etc/init.d/mongod (1)
/lib/systemd/system/mongod.service (2)
Run Code Online (Sandbox Code Playgroud)
我知道它/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
Run Code Online (Sandbox Code Playgroud)
据我了解,这可以通过sudo systemctl start mongod.
我不明白是否在启动时调用。
我不明白为什么需要这些“服务”文件中的两个,以及如何摆脱一个(可能是 /lib/systemd 中的一个,因为它简单得多)。
我不明白这两者之间是否有任何关系。
我也读过它也systemctl适用于init.d脚本,在这种情况下,我不明白这两个文件中的哪一个将由systemctl mongod start.
我认为有一些冗余,我应该只选择两种方式之一。我想确定它是