我在 /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