2012-04-11 136 views
1

我需要更改非root用户执行的tomcat进程。创建用户tomcat并放在tomcat_group组。更改权限。然后在init.d中更改启动脚本。tomcat启动脚本错误

我这是运行作为根用户旧脚本是

#!/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 

但是当开始我服务这给了错误 找不出什么问题

回答

1

这很可能是因为改变了th e $CATALINA_HOME变量为/bin

startup.sh调用catalina.sh脚本,这取决于$CATALINA_HOME是一个特定的目录。我一定建议将它改回CATALINA_HOME=/usr/share/apache-tomcat-7.0.26,然后将/bin加回到命令调用中。 Tomcat严重依赖于CATALINA_HOME环境变量。

希望有所帮助。

编辑:你仍然需要考虑垫的答案,这应该只是解决你现在得到的文件找不到错误。

2

su需要-c,如果你想开始使用它的命令:

/bin/su tomcat -c whatever_command 
+0

帮助显示了这个错误: ENV:/etc/init.d/tomcat:没有这样的文件或目录 – Asghar 2012-04-11 12:40:06

+0

什么显示这个错误?你如何运行脚本? – Mat 2012-04-11 12:41:49

+0

我在“etc/init.d”中有一个名为tomcat的脚本。并运行“service tomcat start” – Asghar 2012-04-11 12:43:03

3

我知道这是一个古老的问题,但这个答案可能有益于某人。

我对“没有这样的文件或目录”有同样的问题。我跑了服务命令shell脚本 $> /etc/init.d/tomcat stop 其返回: -bash: /etc/init.d/tomcat: /bin/bash^M: bad interpreter: No such file or directory

因为我创造了在Windows环境下的脚本它有Windows行结尾。只要我解决了这个问题,Tomcat就可以毫无问题地作为服务启动。

这篇文章可能与线转换How to convert DOS/Windows newline (CRLF) to Unix newline (\n) in a Bash script?

+0

伟大的提示!这个救了我。 – BuvinJ 2015-11-11 17:56:21