Linux
在 Redhat 7 上創建 mongo db 啟動 init.d 腳本時執行格式錯誤
我已經按照將 mongod 添加為 linux 服務的連結進行操作。伺服器重啟後,mongod伺服器沒有重啟。
/etc/rc.d/init.d/mongod 文件內容:
#!/bin/bash # # mongodb Startup script for the mongodb server # # chkconfig: - 64 36 # description: MongoDB Database Server # # processname: mongodb # # Source function library . /etc/rc.d/init.d/functions if [ -f /etc/sysconfig/mongodb ]; then . /etc/sysconfig/mongodb fi prog="mongod" mongod="/usr/bin/mongod" mongodb_user="myUserAdmin" RETVAL=0 start() { echo -n $"Starting $prog: " #daemon $mongod "--fork --logpath /var/log/mongodb.log --logappend 2>&1 >>/var/log/mongodb.log" daemon --user=$mongodb_user $mongod "--config /etc/mongodb.conf" RETVAL=$? echo [ $RETVAL -eq 0 ] && touch /var/lock/subsys/$prog return $RETVAL } stop() { echo -n $"Stopping $prog: " killproc $prog RETVAL=$? echo [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$prog return $RETVAL } reload() { echo -n $"Reloading $prog: " killproc $prog -HUP RETVAL=$? echo return $RETVAL } case "$1" in start) start ;; stop) stop ;; restart) stop start ;; condrestart) if [ -f /var/lock/subsys/$prog ]; then stop start fi ;; reload) reload ;; status) status $mongod RETVAL=$? ;; *) echo $"Usage: $0 {start|stop|restart|condrestart|reload|status}" RETVAL=1 esac exit $RETVAL
通過引用 /var/log/messages
顯示的錯誤是
> Mar 4 09:04:44 redhat7 systemd: Starting SYSV: MongoDB Database Server... Mar 4 09:04:44 redhat7 systemd: Failed at step EXEC spawning /etc/rc.d/init.d/mongod: Exec format error Mar 4 09:04:44 redhat7 systemd: mongod.service: control process exited, code=exited status=203 Mar 4 09:04:44 redhat7 systemd: Failed to start SYSV: MongoDB Database Server. Mar 4 09:04:44 redhat7 systemd: Unit mongod.service entered failed state. Mar 4 09:04:44 redhat7 systemd: mongod.service failed.
請幫我。
可能不是您想要的答案,但您可能會考慮稍微不同的方法。
您的說明從 2013 年開始,並且與預系統化的 RedHat 相關。你有 RedHat 7,它(AFAIK)有 systemd,我建議你使用它,而不是使用 init 腳本。
雖然我很驚訝您在安裝 mongo 時沒有放置合適的腳本,但我認為考慮將 mongo 自己的服務單元用於基於 RPM 的系統可能是有意義的(取自https://github.com/mongodb/ mongo/blob/master/rpm/mongod.service):
[Unit] Description=High-performance, schema-free document-oriented database After=network.target Documentation=https://docs.mongodb.org/manual [Service] User=mongod Group=mongod Environment="OPTIONS=--quiet -f /etc/mongod.conf" ExecStart=/usr/bin/mongod $OPTIONS run ExecStartPre=/usr/bin/mkdir -p /var/run/mongodb ExecStartPre=/usr/bin/chown mongod:mongod /var/run/mongodb ExecStartPre=/usr/bin/chmod 0755 /var/run/mongodb PermissionsStartOnly=true PIDFile=/var/run/mongodb/mongod.pid # file size LimitFSIZE=infinity # cpu time LimitCPU=infinity # virtual memory size LimitAS=infinity # open files LimitNOFILE=64000 # processes/threads LimitNPROC=64000 # total threads (user+kernel) TasksMax=infinity TasksAccounting=false # Recommended limits for for mongod as specified in # http://docs.mongodb.org/manual/reference/ulimit/#recommended-settings [Install] WantedBy=multi-user.target
您可能希望將其放入 /etc/systemd/system/mongod.service,並可能禁用您的 init 腳本。