Script Start-Up Chandler / bin / bash vs / bin / sh

2

Tenha uma instalação do Chandler que funcionasse bem por alguns meses, mas recentemente, quando fui me conectar ao servidor, notei que ela não estava sendo executada.

Entrando no SSH, confirmou que não está rodando, então eu vou reiniciar manualmente através do meu script de inicialização do chandler ( /etc/init.d/chandler ) que funcionou perfeitamente por meses e meses através de várias reinicializações, e eu recebo o seguinte erro:

/chandler/bin/osafsrvctl: 24: Syntax error: "(" unexpected

Agora, se eu for diretamente para /chandler/bin/osafsrvctl e executar o seguinte como root /chandler/bin/osafsrvctl start , ele será iniciado sem erro.

Algumas pesquisas on-line levaram-me a acreditar que isso é algo a ver com Chandler precisando de / bin / bash para iniciar corretamente, pois o script de inicialização é o Bash. Bem. Verifique o arquivo /chandler/bin/osafsrvctl e, de fato, está usando /bin/bash . Alterar o script de inicialização init.d para usar também / bin / bash não fez nada, obter o mesmo erro. Aqui está o script /etc/init.d/chandler que gera o erro:

#!/bin/sh -e
### BEGIN INIT INFO
# Provides:          chandler
# Required-Start:    $local_fs $remote_fs $network $syslog
# Required-Stop:     $local_fs $remote_fs $network $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start/stop chandler server
### END INIT INFO
#
# chandler              This init.d script is used to start chandler.
#                       It basically just calls osafsrvctl.

# set environment variables
. /etc/default/chandler

# set local variables
RETVAL=$?
CHANDLER_HOME="/chandler"

# check input
case "$1" in
    start)
        if [ -f $CHANDLER_HOME/bin/osafsrvctl ];
            then
                /bin/su chandler $CHANDLER_HOME/bin/osafsrvctl start
        fi
        ;;
    stop)
        if [ -f $CHANDLER_HOME/bin/osafsrvctl ];
            then
                /bin/su chandler $CHANDLER_HOME/bin/osafsrvctl stop
        fi
        ;;
    *)
        echo "Usage: /etc/init.d/osafsrvctl {start|stop}"
        exit 1
        ;;
esac

exit $RETVAL

Tenha em mente que os itens acima funcionaram bem até um ponto em que eles não funcionaram - sem ideia do que mudou e por que isso é como é agora.

Alguma idéia?

    
por Paul Mennega 21.09.2011 / 04:57

1 resposta

0

Se este script for executado com /bin/bash , verifique se o link simbólico /bin/sh está apontando para /bin/bash e não para outro shell ( /bin/dash , por exemplo). Eu tive um problema semelhante ao transferir um script bash de um sistema Debian antigo para um mais novo.

Tente alterar a primeira linha em #!/bin/bash -e .

    
por 21.09.2011 / 06:52