서비스 스크립트는 변수를 사용하여 다른 스크립트를 호출합니다.

서비스 스크립트는 변수를 사용하여 다른 스크립트를 호출합니다.

tomcat7/etc/init.d/에는 tomcat 사용자 아래에서 내 응용 프로그램 서버(tomcat)를 시작하고 중지하는 간단한 서비스 스크립트가 있습니다 . RHEL6에서.

#!/bin/bash
# description: Tomcat Start Stop
# processname: tomcat
# chkconfig: 234 20 80

CATALINA_HOME=/usr/local/www/tomcat-7.0.54

case $1 in
start)
/bin/su tomcat $CATALINA_HOME/bin/startup.sh
;;
stop)
/bin/su tomcat $CATALINA_HOME/bin/shutdown.sh 30
;;
esac
exit 0

좋은 결과. 라는 스크립트를 startup.sh호출 합니다 . 이는 애플리케이션 서버와 함께 제공되는 미리 작성된 스크립트입니다.shutdown.shcatalina.sh

catalina.sh예를 들어 다음과 같이 직접 사용할 수 있습니다 ../catalina.sh stop 30 -force

이를 통해 대기 시간을 30초로 지정한 다음 프로세스가 아직 종료되지 않은 경우 kill -9를 수행할 수 있습니다. 하지만 tomcat7서비스 스크립트에서 작동하도록 변수를 가져올 수 없습니다 . 내가 그것을 다음과 같이 바꾸면 :

stop)
/bin/su tomcat $CATALINA_HOME/bin/catalina.sh stop 30 -force

오류가 발생합니다.

[root@543917-web1 bin]# service tomcat7 stop
/bin/su: invalid option -- 'o'

catalina.sh 스크립트를 변경하지 않고 세 개의 매개변수를 전달할 수 있습니까?

티아

답변1

당신은 그것을 사용할 수 있습니다그리고 -c:

/bin/su tomcat -c "$CATALINA_HOME/bin/catalina.sh stop 30 -force"

su매뉴얼 페이지 에서 :

-c, --command=COMMAND
    pass a single COMMAND to the shell with -c

관련 정보