Ich habe eine Weile damit verbracht, mich damit zu befassen, und es scheint, als ob die PID-Ordner- und Dateiberechtigungen nicht mit dem Standard-Daemon funktionieren.
Die einfachste Lösung, auf die ich gestoßen bin, besteht darin, die PID-Datei zu deaktivieren, indem Sie einfach ein # vor die Zeile in der Konfigurationsdatei setzen.
vi /etc/mongod.conf
Suchen Sie die Zeile mit der Aufschrift pidfilepath=/var/run/mongodb/mongod.pid und ändern Sie sie entsprechend.
# pidfilepath=/var/run/mongodb/mongod.pid
Informationen darüber, was das Auskommentieren bewirkt, finden Sie hier.http://docs.mongodb.org/manual/reference/configuration-options/#processManagement.pidFilePath
Wenn Sie Mongod als Dienst starten mit:
sudo service mongod start
Stellen Sie sicher, dass die Verzeichnisse, die für logpath, dbpath und pidfilepath in Ihrer mongod.conf definiert sind, existieren und mongod:mongod gehören.
Ich habe das gleiche Problem, ich habe es vorübergehend gelöst, SELinux deaktiviert, die Maschine neu gestartet, mongod.lock entfernt:
#rm /var/lib/mongo/mongod.lock
Durch Erstellen der Datei /var/run/mongodb/mongo.pid (wie in der Konfigurationsdatei /etc/mongod.conf erwähnt):
#mkdir /var/run/mongodb
#touch /var/run/mongodb/mongod.pid
und 777 Berechtigungen geben:
#chmod 777 /var/run/mongodb/mongod.pid
und Mongo starten:
#service mongod start
Aber das Problem bleibt nach dem Neustart der Maschine bestehen. Der Ordner und die Datei verschwinden.
Was bei Fedora 20 für mich funktioniert hat:Wir müssen das Temp-Verzeichnis bei jedem Start erstellen, und das wird von systemd-tmpfiles gehandhabt. Erstellen Sie also eine Datei /lib/tmpfiles.d/mongodb.conf und fügen Sie eine Zeile darin ein:
d /var/run/mongodb 0755 mongod mongod
Das scheint bei Neustarts zu funktionieren; Wenn Sie nicht sofort neu starten möchten, können Sie dies ausführen mit:
sudo systemd-tmpfiles --create mongodb.conf
(Siehe die Manpages für systemd-tmpfiles)