1

root 以外のユーザーが実行するように tomcat プロセスを変更する必要がありました。ユーザーtomcatを作成し、それをtomcat_groupグループに入れました。権限を変更しました。次に、 init.dの起動スクリプトを変更しました。

root ユーザーとして実行している私の古いスクリプトは

#!/bin/bash
# description: Tomcat Start Stop Restart
# processname: tomcat
# chkconfig: 234 20 80
JAVA_HOME=/usr/java/jdk1.6.0_31
export JAVA_HOME
PATH=$JAVA_HOME/bin:$PATH
export PATH
CATALINA_HOME=/usr/share/apache-tomcat-7.0.26


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

これは root ユーザーとして正常に動作しています。

新しいスクリプトはそれです

    #!/bin/bash
# description: Tomcat Start Stop Restart
# processname: tomcat
# chkconfig: 234 20 80
JAVA_HOME=/usr/java/jdk1.6.0_31
export JAVA_HOME
PATH=$JAVA_HOME/bin:$PATH
export PATH
CATALINA_HOME=/usr/share/apache-tomcat-7.0.26/bin


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

しかし、サービスを開始するとエラーが発生し 、問題が見つかりません

4

3 に答える 3

4

これは古い質問であることは知っていますが、この回答は誰かに役立つかもしれません。

「そのようなファイルまたはディレクトリはありません」という同じ問題がありました。サービスコマンドをシェルスクリプトとして実行すると、次の $> /etc/init.d/tomcat stop ものが返さ れました。-bash: /etc/init.d/tomcat: /bin/bash^M: bad interpreter: No such file or directory

Windows環境でスクリプトを作成したため、Windowsの行末がありました。それを直したところ、Tomcat は問題なくサービスとして起動できました。

この記事は行の変更に役立つかもしれませんBash スクリプトで DOS/Windows 改行 (CRLF) を Unix 改行 (\n) に変換する方法は?

于 2015-07-02T13:11:56.627 に答える
2

su-cコマンドを開始する場合は、が必要です。

/bin/su tomcat -c whatever_command
于 2012-04-11T12:36:23.343 に答える
1

$CATALINA_HOMEこれは、変数を に変更した結果である可能性が最も高い/binです。

は、特定のディレクトリであることに依存するスクリプトをstartup.sh 呼び出します。に変更してから、コマンド呼び出しに再度追加することをお勧めします。Tomcat は環境変数に大きく依存しています。catalina.sh$CATALINA_HOMECATALINA_HOME=/usr/share/apache-tomcat-7.0.26/binCATALINA_HOME

それが役立つことを願っています。

編集:マットの回答を考慮する必要があります。これにより、現在発生しているファイルが見つからないというエラーが修正されるはずです。

于 2012-04-11T14:35:12.843 に答える