Ho passato un po' di tempo a esaminare questo aspetto e sembra che la cartella pid e i permessi dei file non funzionino con il demone predefinito.
La soluzione più semplice che ho trovato è disabilitare il file pid semplicemente mettendo un # davanti alla riga nel file di configurazione.
vi /etc/mongod.conf
trova la riga che dice pidfilepath=/var/run/mongodb/mongod.pid e modificala di conseguenza.
# pidfilepath=/var/run/mongodb/mongod.pid
Per informazioni su cosa commentarlo controlla qui.http://docs.mongodb.org/manual/reference/configuration-options/#processManagement.pidFilePath
Se stai avviando mongod come servizio utilizzando:
sudo service mongod start
Assicurati che le directory definite per logpath, dbpath e pidfilepath nel tuo mongod.conf esistano e siano di proprietà di mongod:mongod.
Ho lo stesso problema, l'ho risolto temporaneamente, disabilitando SELinux, riavviato la macchina, eliminato mongod.lock:
#rm /var/lib/mongo/mongod.lock
Creando il file /var/run/mongodb/mongo.pid (come menzionato nel file di configurazione /etc/mongod.conf):
#mkdir /var/run/mongodb
#touch /var/run/mongodb/mongod.pid
e dando i permessi 777:
#chmod 777 /var/run/mongodb/mongod.pid
e l'avvio di mongo:
#service mongod start
Ma il problema persiste dopo aver riavviato la macchina. La cartella e il file scompaiono.
Cosa ha funzionato per me su Fedora 20:dobbiamo creare la directory temporanea ad ogni avvio, e questo è gestito da systemd-tmpfiles. Quindi, crea un file /lib/tmpfiles.d/mongodb.conf e mettici una riga:
d /var/run/mongodb 0755 mongod mongod
Sembra gestirlo al riavvio; se non vuoi riavviare subito, puoi eseguirlo con:
sudo systemd-tmpfiles --create mongodb.conf
(Vedi le pagine man per i file systemd-tmp)