Ubuntu 16.04下sudo service mongod start与mongod启动MongoDB的差异
两种MongoDB启动方式的核心差异
嘿,我来给你掰扯清楚这两种启动方式的区别,帮你解开困惑~
运行模式天差地别
- 用
sudo service mongod start启动时,MongoDB是以系统服务的形式在后台静默运行的。Ubuntu 16.04的服务管理系统会接管这个进程,哪怕你关掉终端,它也会继续在后台跑,完全不受终端会话的影响。 - 直接敲
mongod的话,它是绑定当前终端的前台进程——终端就是它的“专属控制台”,所有日志、运行信息都直接输出在这里。一旦你关闭终端,这个进程就会被系统终止,自然找不到后续的日志了。
- 用
配置与日志的管理逻辑不同
- 通过
service启动时,MongoDB会自动读取系统默认的配置文件/etc/mongod.conf。这个文件里已经预先配置好了日志路径(就是你看到的/var/log/mongodb/mongod.log)、数据存储目录、监听端口等参数,所以日志会自动写入指定文件,你随时都能去查看,哪怕服务已经跑了好几天。 - 直接运行
mongod时,如果你没通过命令行参数指定--logpath,它就只会把日志输出到终端的标准输出里,不会自动生成日志文件。而且这种方式下,MongoDB用的是最基础的默认参数(比如数据存在/data/db,如果这个目录没创建还会启动失败),完全不会读取系统配置文件里的自定义设置。
- 通过
进程管控的便捷性不一样
- 用
service启动的MongoDB,你可以用sudo service mongod stop、sudo service mongod restart、sudo service mongod status这些简单命令来停止、重启服务,或者查看运行状态,不用手动去查进程ID再杀进程。 - 直接运行的
mongod,进程属于当前启动的用户(没加sudo就是普通用户),要停止它要么在终端按Ctrl+C,要么得用ps aux | grep mongod找到进程ID再用kill命令终止,而且如果用户权限不够(比如没权限写/data/db),还会直接启动失败。
- 用
小补充
如果偶尔想直接运行mongod但又想让它后台存日志,可以试试这个命令:
mongod --logpath /your/custom/log/file.log --fork
--fork参数会让它后台运行,--logpath指定日志文件路径,这样关闭终端也能保留日志啦~
内容的提问来源于stack exchange,提问作者Winnie Tsou
相关产品推荐
相关产品推荐

