bash에서 매개변수를 사용하여 sh 실행

bash에서 매개변수를 사용하여 sh 실행

서비스를 실행하기 위해 데몬 프로세스를 작성 중입니다. 구문은 입니다 ./ctlscript.sh start. 이 명령은 실행할 때 실행되어야 service openproject start하지만 인수 없이 ./ctlscript.sh를 실행하면 사용법을 알 수 있습니다. 이것은 내 스크립트입니다.

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

이것은 service openproject stop을 실행하면 나타나는 결과입니다. ./ctlscript.sh매개변수 없이 실행해도 마찬가지입니다 .

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)

답변1

인수 -cto는 단어여야 하므로

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

"다시 시작"의 경우 "중지", 그 다음 "시작"이어야 합니다.

관련 정보