服务脚本使用变量调用另一个脚本

服务脚本使用变量调用另一个脚本

我在 /etc/init.d/ 中有一个简单的服务脚本,tomcat7用于在 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.sh一个名为 的脚本catalina.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 脚本的情况下传递三个参数吗?

TIA

答案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

相关内容