Mongod 服务位于 systemd 列表中,但无法获取属性

Mongod 服务位于 systemd 列表中,但无法获取属性

我正在使用 Ubuntu 16。当我尝试运行systemctl list-unit-files --type=service

这里

但是当我尝试运行时systemctl start mongodb它说 Failed to start mongodb.service: Unknown unit: mongodb.service

运行systemctl status mongodb.service输出Failed to get properties: No such interface ''

这是mongodb.service单元文件

[Unit]
Description=High-performance, schema-free document-oriented database
After=network.target

[Service]
User=mongodb
ExecStart=/usr/bin/mongod --quiet --config /etc/mongod.conf

[Install]
WantedBy=multi-user.target

答案1

根据您安装 MongoDB 的时间和位置,包可能被命名为“mongod”或“mongodb”。显然,您用这两个名字安装了它。我怀疑您的问题源于重复的包。

首先,检查您实际安装了哪些 MongoDB 包:

dpkg -l '*mongod*' | grep ii

然后,对于每个已安装的“服务器”包,检查哪些 /etc/“init”或“service”文件属于实际已安装的包。就我而言,我已mongodb-org-server在 16.04 上安装,结果如下所示:

$ dpkg -L   mongodb-org-server  | grep systemd
/lib/systemd
/lib/systemd/system
/lib/systemd/system/mongod.service

如果你在“/etc/init”中有另一个用于“/etc/systemd”的文件不是与您实际安装的 MongoDB 版本相关,请将其删除。您可能对旧包使用了“apt-get remove”,它不会自动清除/etc 中的文件

如果您添加或删除了 systemd.service文件,请使用sudo systemctl daemon-reload确保您的更改得到反映。

答案2

systemctl start mongodb我在运行和时遇到了同样的问题systemctl status mongodb.service。在我的例子中,Ubuntu 从 14.04 更新到 16.04,并使用 upstart-sysv 而不是 systemd-sysv。因此,所有systemctl命令都不起作用。

如果您的系统使用 upstart-sysv,则需要为 Ubuntu 14.04 安装 MongoDB,并且不需要创建任何 mongodb.service 配置。只需使用以下命令运行 mongodb:

service mongod start

它帮助了我,希望它也能帮助别人。

相关内容