1. 程式人生 > 實用技巧 >MongoDB 4升級提示 /var/run/mongod.pid: Invalid argument`

MongoDB 4升級提示 /var/run/mongod.pid: Invalid argument`

因安全需要,需要升級MongoDB,本來是件很簡單的事,把包下載下來 -Uvh就完事了。萬萬沒想到花了十幾分鍾。升級以後一直報 Failed to read PID from file /var/run/mongod.pid: Invalid argument

Starting High-performance, schema-free document-oriented database...
Failed to read PID from file /var/run/mongod.pid: Invalid argument
Stopped High-performance, schema-free document-oriented database.

關鍵是MongoDB配置檔案裡面已經配置了pid檔案

[root@ecs-11-152 mongodb]# grep pid /etc/mongod.conf 
  pidFilePath: /data/mongodb/mongod.pid  # location of pidfile

這個 /var/run/mongod.pid 不知道是哪來的

網上查沒有隻發現一個類似的報錯,

https://my.oschina.net/u/2357619/blog/1609622

問題產生原因

因為 nginx 啟動需要一點點時間,而 systemd 在 nginx 完成啟動前就去讀取 pid file
造成讀取 pid 失敗

解決方法

讓 systemd 在執行 ExecStart 的指令後等待一點點時間即可
如果你的 nginx 啟動需要時間更長,可以把 sleep 時間改長一點
建立目錄
mkdir -p /etc/systemd/system/nginx.service.d

在新建目錄中建立檔案override.conf,輸入內容

[Service]
ExecStartPost=/bin/sleep 0.1

然後
systemctl daemon-reload
systemctl restart nginx.service

於是去檢視MongoDB的啟動檔案,/lib/systemd/system/mongod.service

結果發現有這麼一行

PIDFile=/var/run/mongod.pid

把這一行遮蔽以後重啟,問題解決