​问题:​

启动mongodb的时候,发现起不来,报错:child process failed, exited with error number 48然后先去/var/log/mongo/mongod.log 查看启动的日志

​可能原因:​

应该是没有正常关闭mongodb引起的,比如直接 kill -9 <pid>导致

​解决方法:​

1.找到mongod.lock文件,并删除mongod.lock

2.以修复方式启动mongodb

/usr/bin/mongod -f /etc/mongod.conf --repair

3.然后接着在启动一次

/usr/bin/mongod -f /etc/mongod.conf --auth

4.查看进程是否运行

ps aux|grep mongo

​正确关闭mongodb的方法​

​warning:千万不能使用kill -9 <pid>,因为MongoDB使用mmap方式进行数据文件管理,也就是说写操作基本是在内存中进行,写操作会被每隔60秒(syncdelay设定)的flush到磁盘里。如果在这60秒内flush处于停止事情我们进行kill -9那么从上次flush之后的写入数据将会全部丢失。如果在flush操作进行时执行kill -9则会造成文件混乱,可能导致数据全丢了,启动时加了repair也无法恢复。​

​官方文档:https://docs.mongodb.org/manual/tutorial/manage-mongodb-processes/​

Stop mongod Processes

In a clean shutdown a mongod completes all pending operations, flushes all data to data files, and closes all data files. Other shutdowns are ​unclean​ and can compromise the validity of the data files.

To ensure a clean shutdown, always shutdown mongod instances using one of the following methods:

Use shutdownServer()

Shut down the mongod​ from the mongo​ shell using the db.shutdownServer() method as follows:

use admin
db.shutdownServer()

Calling the same method from a init script accomplishes the same result.

For systems with authorization​ enabled, users may only issue db.shutdownServer() when authenticated to the admin database or via the localhost interface on systems without authentication enabled.

Use --shutdown

From the Linux command line, shut down the mongod using the ​--shutdown​ option in the following command:

mongod --shutdown

Use CTRL-C

When running the mongod instance in interactive mode (i.e. without ​--fork​), issue Control-C to perform a clean shutdown.

Use kill

From the Linux command line, shut down a specific mongod instance using the following command:

kill <mongod process ID>

WARNING

Never use kill -9 (i.e. SIGKILL) to terminate a mongod instance.