Execute sh com parâmetros no bash

1

Estou codificando um daemon para executar um serviço. A sintaxe é ./ctlscript.sh start . Quando executo service openproject start , ele deve executar este comando, mas ele executa ./ctlscript.sh sem um parâmetro e eu recebo o uso. Este é o meu script:

#! /bin/sh
### BEGIN INIT INFO
# Provides: openproject
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Openprject
# Description: This file starts and stops Openproject server
#
### END INIT INFO

OPENP_DIR=/opt/openprj

case "$1" in
 start)
   su administrador -c $OPENP_DIR/ctlscript.sh start
   ;;
 stop)
   su administrador -c $OPENP_DIR/ctlscript.sh stop
   ;;
 restart)
   su administrador -c $OPENP_DIR/ctlscript.sh stop
   sleep 20
   su administrador -c $OPENP_DIR/ctlscript.sh start
   ;;
 *)
   echo "Usage: openproject {start|stop|restart}" >&2
   exit 3
   ;;
esac

Isto é o que eu recebo quando executo o serviço openproject stop. É o mesmo quando eu inicio ./ctlscript.sh (sem nenhum parâmetro):

usage: /opt/openprj/ctlscript.sh help
       /opt/openprj/ctlscript.sh (start|stop|restart|status)
       /opt/openprj/ctlscript.sh (start|stop|restart|status) mysql
       /opt/openprj/ctlscript.sh (start|stop|restart|status) memcached
       /opt/openprj/ctlscript.sh (start|stop|restart|status) apache
       /opt/openprj/ctlscript.sh (start|stop|restart|status) subversion
       /opt/openprj/ctlscript.sh (start|stop|restart|status) openproject

help       - this screen
start      - start the service(s)
stop       - stop  the service(s)
restart    - restart or start the service(s)
status     - show the status of the service(s)
    
por Esteban S 28.07.2015 / 11:53

1 resposta

5

O argumento para -c deve ser uma única palavra, então

 su administrador -c "$OPENP_DIR/ctlscript.sh start"

Para "reiniciar", você deve "parar" primeiro e depois "iniciar"

    
por 28.07.2015 / 12:11