2014-11-05 22 views
9

我想弄清楚爲什麼提供的init.d腳本不能在CentOS上工作。我試圖手動啓動它:Mongo mongod init.d腳本不能在CentOS上工作

/etc/init.d/mongod start 

,但我得到了以下錯誤:

Starting mongod: /usr/bin/dirname: extra operand `2>&1.pid' 
Try `/usr/bin/dirname --help' for more information. 

我看着在腳本,它會嘗試啓動:

daemon --user "$MONGO_USER" "$NUMACTL $mongod $OPTIONS >/dev/null 2>&1" 

所以我看了其中的mongod var定義爲:

mongod=${MONGOD-/usr/bin/mongod} 

還試過:

service mongod start 

同樣的錯誤。

不知道我設置錯了,但我已驗證我有最新的腳本,但我不能讓mongod進程啓動。

任何想法???

+1

我在Red Hat Linux和MongoDB 2.6.5上看到類似的行爲 - 但MongoDB _does_開始,不管這個錯誤。 – Tommi 2014-11-06 06:53:26

+0

@Tommi:對於CentOS7,你可能想看看https://jira.mongodb.org/browse/SERVER-14679?filter=-2 – 2014-11-20 08:55:23

+0

@lostintranslation:你使用的是哪個版本的centos? – 2014-11-20 08:55:54

回答

0

檢查在配置文件中/etc/mongod.conf蒙戈pid文件位置:

awk -F'[:=]' -v IGNORECASE=1 '/^[[:blank:]]*pidfilepath[[:blank:]]*[:=][[:blank:]]*/{print $2}' /etc/mongod.conf 

默認情況下,應該有這一行mongod.conf:「pidfilepath =/var/run中/ MongoDB的/ mongod.pid」。如果它不存在,就添加它。

如果您使用的是/etc/mongod.conf的YAML版本,請檢查此問題:https://jira.mongodb.org/browse/SERVER-13595。總之,你需要改變這一行/etc/rc.d/init.d/mongod:

PIDFILE=`awk -F= '/^pidfilepath[[:blank:]]*=[[:blank:]]*/{print $2}' "$CONFIGFILE"` 

到:

PIDFILE=`awk -F: '/^[[:blank:]]*pidFilePath[[:blank:]]*:[[:blank:]]*/{print $2}' "$CONFIGFILE" | tr -d ' '` 
+0

很酷,謝謝我會試試。快速注意我也可以用我的配置文件手動啓動mongod。 mongod -f /etc/mongod.conf。似乎不像conf文件問題,更像是一個init.d腳本問題。另外啓動mongod:/ usr/bin/dirname錯誤很麻煩,應該試圖啓動/ usr/bin/mongod,/ usr/bin/dirname好像是一個腳本變量被搞砸了。 – lostintranslation 2014-11-06 17:34:33

0

對於我的問題是在pidfilepath。初始化腳本無法處理路徑格式這樣

pidfilepath = /var/run/mongodb/mongod.pid

PIDFILE變量初始化裏面的腳本包含「/var/run/mongodb/mongod.pid '而不是'/var/run/mongodb/mongod.pid'

修復: 用這個替換PIDFILE行,它將工作。

PIDFILE = awk -F= '/^pidfilepath[[:blank:]]*=[[:blank:]]*/{gsub(" ", "", $2);print $2}' "$CONFIGFILE"

+0

另一種解決方案可能是https://github.com/mongodb/mongo/commit/50ca596ace0b1390482408f1b19ffb1f9170cab6 – 2014-11-20 08:58:20

1

下面的鏈接出現爲解決這一問題以及 https://ma.ttias.be/mongodb-startup-dirname-extra-operand-pid/

簡單地說,一個壞腳本似乎已經分發了,但是它產生的輸出沒有危害,mongod仍然運行。如果你運行yum update,你會得到一個固定的腳本,但是可能mongod仍然會失敗,因爲腳本不會失敗。檢查你的mongo日誌(通常是/var/log/mongodb/mongod.log,但如果在/etc/mongod.conf中以不同的方式指定則可能不同)。日誌文件應該告訴你它失敗的真正原因。

+0

我的mongod進程沒有啓動。我將升級以查看如果修復了這些問題 – lostintranslation 2015-01-17 15:02:11

0

我也遇到了同樣的問題。

的解決辦法是使腳本文件(/etc/init.d/mongod)一個小的變化如下提到:

line 63我猜:

daemon --user "$MONGO_USER" "$NUMACTL $mongod $OPTIONS >/dev/null 2>&1" 

daemon --user "$MONGO_USER" --pidfile "$PIDFILE" "$NUMACTL $mongod $OPTIONS >/dev/null 2>&1" 

希望這有助於! !