これについてしばらく調べてみたところ、pid フォルダーとファイルのアクセス許可がデフォルトのデーモンでは機能しないようです。
私が見つけた最も簡単な解決策は、構成ファイルの行の前に # を付けて pid ファイルを無効にすることです。
vi /etc/mongod.conf
pidfilepath=/var/run/mongodb/mongod.pid という行を見つけて、それに応じて変更してください。
# pidfilepath=/var/run/mongodb/mongod.pid
コメントアウトの内容については、こちらをご覧ください。http://docs.mongodb.org/manual/reference/configuration-options/#processManagement.pidFilePath
以下を使用して mongod をサービスとして開始する場合:
<ブロック引用>sudo サービス mongod 開始
mongod.conf で logpath、dbpath、および pidfilepath に定義されたディレクトリが存在し、mongod:mongod によって所有されていることを確認してください。
私は同じ問題を抱えています。一時的に解決し、SELinux を無効にし、マシンを再起動し、mongod.lock を削除しました:
#rm /var/lib/mongo/mongod.lock
ファイル /var/run/mongodb/mongo.pid を作成する (構成ファイル /etc/mongod.conf に記載されているとおり):
#mkdir /var/run/mongodb
#touch /var/run/mongodb/mongod.pid
そして 777 パーミッションを与える:
#chmod 777 /var/run/mongodb/mongod.pid
そしてmongoを開始:
#service mongod start
しかし、マシンを再起動しても問題は解決しません。フォルダとファイルが消えます。
Fedora 20でうまくいったこと:起動ごとに一時ディレクトリを作成する必要があり、それはsystemd-tmpfilesによって処理されます。したがって、ファイル /lib/tmpfiles.d/mongodb.conf を作成し、その中に 1 行を追加します:
d /var/run/mongodb 0755 mongod mongod
再起動時にそれを処理するようです。すぐに再起動したくない場合は、次のコマンドで実行できます:
sudo systemd-tmpfiles --create mongodb.conf
(systemd-tmpfiles の man ページを参照してください)