无法启动mongod.service:找不到单位mongod.service

Rah*_*hul 49 ubuntu mongodb mongodb-query mean-stack

我按照mongodb安装文档中提到的所有步骤进行操作.

对于ubuntu 16.04

第1步:

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 2930ADAE8CAF5059EE73BB4B58712A2291FA4AD5
Run Code Online (Sandbox Code Playgroud)

第2步:

echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.6 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.6.list
Run Code Online (Sandbox Code Playgroud)

第3步:

sudo apt-get update
Run Code Online (Sandbox Code Playgroud)

第4步:

sudo apt-get install -y mongodb-org
Run Code Online (Sandbox Code Playgroud)

第5步:

sudo service mongod start
Run Code Online (Sandbox Code Playgroud)

当我开始mongodb得到一个错误

"Failed to start mongod.service: Unit mongod.service not found." please help me to solve this.
Run Code Online (Sandbox Code Playgroud)

Jeh*_*lik 81

很可能单位mongodb.service被屏蔽了.使用以下命令取消屏蔽它.

sudo systemctl unmask mongodb

并重新运行

sudo service mongod start

  • 无论出于何种原因,在 Ubuntu 19.10 上我不得不说“mongodb”而不是“mongod”。 (10认同)
  • 返回:`单元 mongodb.service 不存在,继续进行。` (6认同)
  • @Ilan如果你不解释我们你的问题,我们无法帮助你.简单地说"不为我工作",没有用. (5认同)
  • 这很令人困惑 (5认同)
  • 正确的命令是:`sudo systemctl unmask mongod && sudo service mongod start` (3认同)
  • 一个重要的错字导致这个答案不起作用。请更正。Ubuntu 中正确的单元名称是“mongod”而不是“mongodb”。因此,取消屏蔽的正确命令是:`sudo systemctl unmask mongod`。感谢您的关注。 (3认同)
  • 在 Ubuntu 18 上它是 mongodb 而不是 mongod。 (3认同)

小智 35

请按照以下步骤,它应该工作.

1 - 完全卸载当前安装

来源 - 官方指示

sudo service mongod stop
Run Code Online (Sandbox Code Playgroud)

删除包

sudo apt-get purge mongodb-org*
Run Code Online (Sandbox Code Playgroud)

删除文件夹

sudo rm -r /var/log/mongodb
sudo rm -r /var/lib/mongodb
Run Code Online (Sandbox Code Playgroud)

2 - 按官方网站上的说明重新安装,我将写下所有步骤.在此输入链接描述

导入公钥

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 2930ADAE8CAF5059EE73BB4B58712A2291FA4AD5
Run Code Online (Sandbox Code Playgroud)

为Ubuntu 16.04创建一个列表文件

echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.6 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.6.list
Run Code Online (Sandbox Code Playgroud)

更新列表

sudo apt-get update
Run Code Online (Sandbox Code Playgroud)

安装最新的软件包

sudo apt-get install -y mongodb-org
Run Code Online (Sandbox Code Playgroud)

3 - 现在它应该工作,请尝试下面的命令

sudo service mongod start
Run Code Online (Sandbox Code Playgroud)

并检查状态

mongo
Run Code Online (Sandbox Code Playgroud)

它应该出现在mongo shell中

  • 对于重新安装无用的未来读者,这个[AskUbuntu答案](https://askubuntu.com/a/770133/751635)是一个更好的解决方案.目前还不清楚这个答案和OP的尝试之间的区别是什么都指向相同的指令链接. (4认同)
  • 2021年解决方案!谢谢芽 (2认同)

unc*_*exo 34

无法启动mongod.service:找不到单位mongod.service

如果您正在关注官方文档并且遇到上述错误,则意味着您的计算机上尚未启用mongod.service(我在谈论Ubuntu 16.04).您需要使用以下命令执行此操作

sudo systemctl enable mongod.service
Run Code Online (Sandbox Code Playgroud)

现在,您可以使用以下命令启动mongodb

sudo service mongod start
Run Code Online (Sandbox Code Playgroud)

  • 无法执行操作:没有这样的文件或目录:( (2认同)

小智 17

你觉得你错过了'b'?

sudo service mongod start
Run Code Online (Sandbox Code Playgroud)

应该

sudo service mongodb start
Run Code Online (Sandbox Code Playgroud)

我想是这样的吗?

  • 我已经尝试过但显示相同的错误 (4认同)
  • 运行"sudo systemctl unmask mongodb"后它的工作:) (3认同)
  • 在ubuntu 18.04上,如果你从系统仓库安装,那么它是`mongodb`而不是`mongod` (2认同)

Dee*_*pta 10

跟我一起案例

安装后运行良好;我重启后出现这个问题。

对我有用的是

sudo mkdir /var/lib/mongodb 
sudo mkdir /var/log/mongodb 
sudo chown -R mongodb:mongodb /var/lib/mongodb 
sudo chown -R mongodb:mongodb /var/log/mongodb 
Run Code Online (Sandbox Code Playgroud)

运行上述命令后打开一个新终端并运行:

sudo systemctl restart mongod
Run Code Online (Sandbox Code Playgroud)

并运行 mongo shell 来检查:

mongo
Run Code Online (Sandbox Code Playgroud)

笔记

如果再次出现此问题(就像我每次重新启动时一样),请将其作为 shell 脚本在启动时运行。

永久解决方案(启动时的shell脚本)

步骤1:

/etc/init.d在目录下创建一个文件

sudo gedit /etc/init.d/custom-mongo-fix.sh
Run Code Online (Sandbox Code Playgroud)

第2步:

将以下代码放入您刚刚在步骤 1中打开的文件中

#!/bin/bash

# mongodb fix
sudo mkdir /var/lib/mongodb 
sudo mkdir /var/log/mongodb 
sudo chown -R mongodb:mongodb /var/lib/mongodb 
sudo chown -R mongodb:mongodb /var/log/mongodb 
Run Code Online (Sandbox Code Playgroud)

步骤3:

下次启动后,您可以mongod通过以下方式正常启动服务器:

sudo systemctl start mongod
Run Code Online (Sandbox Code Playgroud)

说明: mongodb需要以上两个带有owneras的文件夹mongodb。当我们关闭/重新启动时,其中一个或两个都会被删除。因此,我们需要创建它们并更改它们的所有权。

编辑:我在每次关机前都使用Stacer的清洁工具。这还会删除日志文件和文件夹。因此,每次启动时都会出错。现在我取消选择 mongodb 选项,然后清理。

合十礼。


小智 7

$service mongodb start
$service mongodb status
Run Code Online (Sandbox Code Playgroud)

当我开始使用上述命令时,状态处于活动状态


hen*_*sok 7

对于 Ubuntu 16.04.5,注意到在我安装在多台服务器上之后,MongoDB 安装不会在安装后自动启用 mongod.service 文件,因此我们需要像下面这样启用它:

发出以下问题以检查是否启用了 mongod

systemctl list-unit-files --type=service
Run Code Online (Sandbox Code Playgroud)

如果它显示为“已禁用”,那么您需要启用它。

sudo systemctl enable mongod.service
Run Code Online (Sandbox Code Playgroud)

如果我们想查看 mongod.service 文件是否存在,以防此文件丢失,请检查

ls /lib/systemd/system
Run Code Online (Sandbox Code Playgroud)

你会看到一个文件

/lib/systemd/system/mongod.service
Run Code Online (Sandbox Code Playgroud)


小智 6

[解]

只需输入

sudo mongod
Run Code Online (Sandbox Code Playgroud)

它会工作。

  • 如果`未能启用单元:单元文件mongod.service不存在。'仅当perm拒绝`mongo`时,这无济于事! (2认同)

Sha*_*rdj 6

30 多个现有答案都没有帮助我,因为我的服务文件实际上丢失了,而不是被屏蔽或禁用。由于某种原因重新安装也没有创建它。解决方案:

cd /lib/systemd/system
sudo touch mongodb.service
# Copy and paste text to go into service file from snippet below horizontal rule
sudo nano mongodb.service
sudo systemctl daemon-reload
sudo systemctl start mongodb
sudo systemctl status mongodb
Run Code Online (Sandbox Code Playgroud)
[Unit]
Description=An object/document-oriented database
Documentation=man:mongod(1)
After=network.target

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

[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)

您应该检查 /etc/mongod.conf 实际上是您的conf文件的位置,它可能是/etc/mongodb.conf。

至于您的服务文件最初是如何丢失的。我设法通过卸载 3.0.15 来破坏它,尝试安装 5.* 但失败,因为 ubuntu 16 由于某些依赖项冲突而无法运行它,然后再次重新安装 3.0.15。


小智 5

只需尝试使用以下命令:

$ sudo systemctl enable mongod
Run Code Online (Sandbox Code Playgroud)


小智 5

您可以修复

$ sudo rm /var/lib/mongodb/mongod.lock
$ mongod --repair
$ sudo service mongodb start
Run Code Online (Sandbox Code Playgroud)

对于停止

$ sudo service mongodb stop
Run Code Online (Sandbox Code Playgroud)

对于重新启动-

$ sudo service mongodb restart
Run Code Online (Sandbox Code Playgroud)

对于状态 -

$ sudo service mongodb status
Run Code Online (Sandbox Code Playgroud)


小智 5

根据文档

运行以下命令来重新加载守护进程:

sudo systemctl daemon-reload
Run Code Online (Sandbox Code Playgroud)

之后您需要重新启动 mongod 服务:

sudo systemctl start mongod
Run Code Online (Sandbox Code Playgroud)

要验证 MongoDB 是否已启动,请运行:

sudo systemctl status mongod
Run Code Online (Sandbox Code Playgroud)

要确保 MongoDB 在系统重新启动后启动,请运行:

sudo systemctl enable mongod
Run Code Online (Sandbox Code Playgroud)


Tad*_*egn 5

在管理数据库中添加用户时发生了这种情况。

sudo systemctl daemon-reload 
Run Code Online (Sandbox Code Playgroud)

从官方 mongo 网站推荐,但没有帮助。

如果你得到

mongod.service 的作业失败,因为控制进程退出并显示错误代码。有关详细信息,请参阅“systemctl status mongod.service”和“journalctl -xe”。

执行时

sudo systemctl start mongod
Run Code Online (Sandbox Code Playgroud)

运行journalctl -xe,如果问题是

Failed to start MongoDB Database Server.
-- Subject: Unit mongod.service has failed
Run Code Online (Sandbox Code Playgroud)

然后运行sudo mongod-->mongo 这将解决问题,如果你想运行systemctl,然后终止 mongod 和 mongo 的窗口并运行

sudo systemctl start mongod 
Run Code Online (Sandbox Code Playgroud)

进而 mongo