[英]ERROR: Cannot write pid file to /var/run/mongodb/mongod.pid: No such file or directory inf fedora 20
[英]Mongo Restart Error — /var/run/mongodb/mongod.pid exists
我剛剛啟動了一個新的 AWS Linux AMI 2016.09.1(HVM) 並下載了最新的 Mongodb 版本。 我正在使用 MongoDB 版本 3.0.14。 我將 /etc/mongod.conf 更新為以下內容,
# mongod.conf
# for documentation of all options, see:
# http://docs.mongodb.org/manual/reference/configuration-options/
# where to write logging data.
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongod.log
# Where and how to store data.
storage:
dbPath: /var/lib/mongo
journal:
enabled: true
# engine:
# mmapv1:
# wiredTiger:
# how the process runs
processManagement:
fork: true # fork and run in background
pidFilePath: /var/run/mongodb/mongod.pid # location of pidfile
# network interfaces
net:
port: 27017
# bindIp: 127.0.0.1 # Listen to local interface only, comment to listen on
all interfaces.
#security:
#operationProfiling:
#replication:
#sharding:
## Enterprise-Only Options
#auditLog:
#snmp:
我第一次使用服務運行 Mongodb,
sudo service mongod start
一切正常。 當我停止 Mongodb 並重新啟動時,
sudo service mongod stop
sudo service mongod restart
我收到以下錯誤,
Error starting mongod. /var/run/mongodb/mongod.pid exists.
這是日志文件中的內容,/var/log/mongodb/mongod.log,
2017-01-16T14:11:16.869+0000 I CONTROL ***** SERVER RESTARTED *****
2017-01-16T14:11:16.872+0000 I CONTROL [initandlisten] MongoDB starting :
pid=2820 port=27017 dbpath=/var/lib/mongo 64-bit hos
t=ip-10-0-0-91
2017-01-16T14:11:16.872+0000 I CONTROL [initandlisten] db version v3.0.14
2017-01-16T14:11:16.872+0000 I CONTROL [initandlisten] git version:
08352afcca24bfc145240a0fac9d28b978ab77f3
2017-01-16T14:11:16.872+0000 I CONTROL [initandlisten] build info: Linux
ip-10-63-190-181 3.4.43-43.43.amzn1.x86_64 #1 SMP Mon
May 6 18:04:41 UTC 2013 x86_64 BOOST_LIB_VERSION=1_49
2017-01-16T14:11:16.872+0000 I CONTROL [initandlisten] allocator: tcmalloc
2017-01-16T14:11:16.872+0000 I CONTROL [initandlisten] options: { config:
"/etc/mongod.conf", net: { port: 27017 }, processMan
agement: { fork: true, pidFilePath: "/var/run/mongodb/mongod.pid" },
storage: { dbPath: "/var/lib/mongo", journal: { enabled: t
rue } }, systemLog: { destination: "file", logAppend: true, path:
"/var/log/mongodb/mongod.log" } }
2017-01-16T14:11:16.893+0000 E NETWORK [initandlisten] Failed to unlink
socket file /tmp/mongodb-27017.sock errno:1 Operation
not permitted
2017-01-16T14:11:16.893+0000 I - [initandlisten] Fatal Assertion
28578
2017-01-16T14:11:16.893+0000 I - [initandlisten]
***aborting after fassert() failure
我已經看到幾個博客發布了關於這個問題的解決方案,但它們似乎都不起作用。 周日花了一整天的時間試圖弄清楚這一點。 在運行較早的 AWS 實例和 Mongo 之前從未遇到過這個問題。
好的,發現問題了。 我按照上面 Dave Maples 的建議刪除了 /var/run/mongodb/mongod.pid 文件。 但是,MongoDB 仍然無法運行。 我再次查看日志文件,現在看到它在吠叫這個文件,
/tmp/mongodb-27017.sock
看起來它沒有正確的權限。 我試過了,
sudo chown mongod:mongod /tmp/mongodb-27017.sock
它工作得很好。 現在,當我多次啟動/停止/重啟 MongoDB 時,我不再遇到這個問題。 我認為文件權限導致 MongoDB 無法正確清理自身並將 /var/run/mongodb/mongod.pid 文件留在目錄中。 這導致了“啟動 mongod 時出錯。/var/run/mongodb/mongod.pid 存在”錯誤。 然而,這並不是真正的問題。 真正的問題是 /tmp/ 權限。 在我刪除 mongod.pid 文件並重新啟動 Mongod 后查看日志文件顯示權限問題。 所以這是解決問題的方法,
sudo rm /var/run/mongodb/mongod.pid
sudo chown mongod:mongod /tmp/mongodb-27017.sock
我敢打賭,如果我在運行 MongoDB 之前在新服務器上安裝 MongoDB 后立即嘗試“sudo chown mongod:mongod /tmp/mongodb-27017.sock”,就可以避免這個問題。 在這一天浪費了佛羅里達州一個非常好的晴天。
好的,找到了一個更好的解決方案來解決我在第一個答案中的問題。 我之前的回答只是消除了症狀。 我看到其他幾個人不得不 chown 其他各種目錄。 我認為問題在於 mongod 沒有正確重啟,並且在失敗時會留下一些錯誤設置的目錄。 我懷疑多個線程正在運行,因此錯誤設置的目錄有些隨機。 我正在使用 Amazon 的 AWS AMI Linux 版本並安裝 MongoDB 3.4。 我在以下位置找到了一個非常好的 MongoDB 安裝腳本
https://docs.mongodb.com/manual/tutorial/install-mongodb-on-amazon/
所以這里是修復。 我測試了幾次,每次都有效。 像往常一樣安裝 mongo。 如果有幫助,請使用上面的腳本。 在啟動 mongod 之前執行以下命令,
sudo chkconfig mongod on
您會注意到上面的安裝腳本突出顯示了 chkconfig,但在腳本的底部可能看不到它。 這將確保您每次都可以成功重啟 mongod。 這應該適用於其他 linux 版本。
您可能會更改配置文件中的 ip:
vim /etc/mongod.conf
# bindIp: 127.0.0.1 # Listen to local interface only, comment to listen on
all interfaces.
bindIp: xxx.xxx.xxx.xxx
嘗試重新啟動服務器,連接到服務器並再次運行該命令。 對我來說效果很好。
如果用戶和組的分配不起作用,您還有另一種選擇,但這直接取決於 sock 文件的狀態。
我移動了 mongodb-27017.sock 並重命名了它,刪除了 .pid 文件並啟動了服務,這樣進程就可以工作了
sudo mv /tmp/mongodb-27017.sock /tmp/mongodb-27017.sock2
sudo rm /var/run/mongodb/mongod.pid
sudo service mongod start
停止服務器后,您正在嘗試重新啟動。 您只能啟動服務器。 這就是您收到停止錯誤的原因。 而且也無需擔心此錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.