web-dev-qa-db-ja.com

Mongodbがsystemctlの使用を開始しない

Mongoサービス(systemctl start mongodb)を開始しようとすると、journalctlで次のエラーが発生します。

Mar 21 15:36:18 redhat7 systemd[1]: Started High-performance, schema-free document-oriented database.
Mar 21 15:36:18 redhat7 systemd[1]: Starting High-performance, schema-free document-oriented database...
Mar 21 15:36:18 redhat7 mongod[14333]: about to fork child process, waiting until server is ready for con
Mar 21 15:36:18 redhat7 mongod[14333]: forked process: 14335
Mar 21 15:36:18 redhat7 systemd[1]: mongod.service: main process exited, code=exited, status=1/FAILURE
Mar 21 15:36:18 redhat7 systemd[1]: Unit mongod.service entered failed state.
Mar 21 15:36:18 redhat7 systemd[1]: mongod.service failed.

しかし、次のコマンドをrootとして実行すると機能します!

Sudo -u mongod /usr/bin/mongod -f /etc/mongod1.conf

/lib/systemd/system/mongod.service

[Unit]
Description=High-performance, schema-free document-oriented database
After=network.target

[Service]
User=mongod
ExecStart=/usr/bin/mongod --quiet --config /etc/mongod1.conf

[Install]
WantedBy=multi-user.target
4
Telen Stanley

Systemdのデフォルトでは、サービスは単純です。つまり、フォアグラウンドで実行され、存在する場合、サービスは停止していると見なされます。

Mongod構成ファイルは次のようなものです:

processManagement: fork: true

その中でmongodがバックグラウンドにフォークします。これを修正するには2つの方法があります。最善の方法は、/etc/mongod1.confforkをfalseに変更することです。もう1つは、Type=forkingファイルの[Service]セクションに.serviceを設定することです。

1
Tollef Fog Heen