Ubuntu 20.04中mongod.service卡于激活中状态致依赖服务无法启动
解决Ubuntu 20.04上mongod.service卡在activating状态的问题
以下是针对MongoDB 6.0.8服务无法完成激活的排查和修复步骤:
1. 修正systemd服务配置与MongoDB后台启动设置
systemd无法识别mongod已就绪,大概率是服务类型或MongoDB启动模式不匹配:
- 打开systemd服务文件:
sudo nano /lib/systemd/system/mongod.service - 确保
Type字段设置为forking(因为mongod默认会后台fork进程) - 打开MongoDB配置文件:
sudo nano /etc/mongod.conf - 确认
processManagement.fork参数为true,如果是false则修改并保存 - 重新加载systemd配置:
sudo systemctl daemon-reload - 重启服务:
sudo systemctl start mongod
2. 排查权限与日志错误
即使mongod进程启动,权限问题可能导致初始化未完成,让systemd认为服务未就绪:
- 查看MongoDB启动日志:
sudo tail -n 50 /var/log/mongodb/mongod.log - 如果日志显示数据目录/日志目录权限不足,执行修复:
sudo chown -R mongodb:mongodb /var/lib/mongodb sudo chown -R mongodb:mongodb /var/log/mongodb - 如果存在套接字文件权限错误,删除旧套接字后重启:
sudo rm /run/mongodb/mongod.sock sudo systemctl restart mongod
3. 清理systemd状态缓存
systemd的状态缓存可能导致异常,强制重置后重试:
- 停止服务并杀死残留进程:
sudo systemctl stop mongod sudo pkill mongod - 重置服务失败状态:
sudo systemctl reset-failed mongod - 重新加载配置并启动:
sudo systemctl daemon-reload sudo systemctl start mongod - 验证状态:
sudo systemctl status mongod
4. 检查服务就绪条件
如果自定义过mongod.service文件,可能存在错误的后置命令:
- 打开服务文件,检查是否有多余的
ExecStartPost指令,若有则临时注释 - 确认
RemainAfterExit参数设置为no,避免systemd误判服务状态
内容的提问来源于stack exchange,提问作者Meffe
相关产品推荐
相关产品推荐

