Mongod通过systemctl启动自动被pid:1以signal 15杀掉
解决办法:
去掉mongo.conf配置文件中的fork = true。(mongo.conf默认在/etc/mongo.conf)
或者
在/usr/lib/systemd/system/mongod.service配置中
[service]下加入
Type=fork
PIDFile=/var/run/mongodb/mongod.pid
然后再mongo.conf配置文件中加入
processManagement:
fork: true # 是否后台启动
pidFilePath: "/var/run/mongodb/mongod.pid" # 用于systemctl启动的pid文件
原因:
1.systemctl默认以simple模式启动进程该模式下会跟踪服务主进程,如果我们mongod以fork方式启动,主进程退出时,systemctl会认为服务结束,杀掉这个主进程的所有子进程。所以我们不以fork方式启动mongod即可。
2.设置systemd启动mongod为fork模式,这样主进程退出时会把子进程pid写入到我们配置的pid文件中,这样systemd就可以根据pid文件正确跟踪子进程。首先在mongod的配置中配置pid文件路径,使其写入到这个路径,然后再systemd的mongod.service中配置pid文件路径,以便systemd读取pid文件。