サービススクリプトは変数を使用して別のスクリプトを呼び出します。

サービススクリプトは変数を使用して別のスクリプトを呼び出します。

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スクリプトを変更せずに3つのパラメータを渡すことはできますか?

ティア

ベストアンサー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

おすすめ記事