如果我运行以下命令,一切都会按预期工作:
sudo mongod --fork --dbpath /path/to_data/ --port 27027 --syslog
但是,如果我将以下命令放入 startmongo.sh 并使用 sudo 运行它,则会收到错误消息:
mongod --fork --dbpath /path/to_data/ --port 27027 --syslog
错误:
[root@server Folder]# sudo ./startmongo.sh
about to fork child process, waiting until server is ready for connections.
forked process: 2394
ERROR: child process failed, exited with error number 100
To see additional information in this output, start without the "--fork" option.
如果我查看日志文件,我会看到以下内容:
initAndListn 中的 STORAGE [initandlisten] 异常:Location28596:无法确定数据目录 /path/to_data/ 中锁定文件的状态:boost::filesystem::status:权限被拒绝:“/path/tod_data/mongod.lock”,正在终止
那么如何从脚本启动 Mongo 呢?
因此,当您使用 fork 而不使用 sudo 时,有效的 uid 没有权限。
编辑:所以我的意思是,如果你不想守护进程,你应该使用 nohup
&
并管理脚本中的所有内容。使用您的日志data directory /path/to_data/: boost::filesystem::status: Permission denied
意味着新生成的进程无权访问文件或数据。这里--fork
正在做一些有趣的事情,所以它不像你上面提到的那样工作。您可以尝试两种选择:
nohup mongod --fork --dbpath /path/to_data/ --port 27027 --syslog &
希望这会有所帮助。