Erro de formato Exec ao criar o script init.d do mongo db startup no Redhat 7

1

Eu segui o link para adicionar o mongod como serviço linux. após a reinicialização do servidor, o servidor mongod não é reiniciado.

/etc/rc.d/init.d/tipo de conteúdo do arquivo:

                #!/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

consultando o / var / log / messages

o erro exibido é

> 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.

por favor me ajude.

    
por Telen Stanley 04.03.2017 / 12:19

1 resposta

2

Possivelmente não é a resposta que você quer, mas você pode considerar uma abordagem um pouco diferente.

Suas instruções datam de 2013 e estão relacionadas ao RedHat pré-systemd. Você tem o RedHat 7, que (AFAIK) possui o systemd, e eu recomendo que você o use, em vez de usar um script de inicialização.

Embora eu esteja surpreso que você não tenha um script adequado instalado quando instalou o mongo, acho que pode fazer sentido considerar o uso da própria unidade de serviço do mongo para sistemas baseados em RPM (tirados de link ):

[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

Você gostaria de colocar isso em /etc/systemd/system/mongod.service e, possivelmente, desativar seu script de inicialização.

    
por 04.03.2017 / 14:43