tomcat启动脚本错误

时间:2012-04-11 12:33:34

标签: linux tomcat centos

我需要更改由非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

但是在启动服务时会出错 无法找到问题

3 个答案:

答案 0 :(得分: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?

答案 1 :(得分:2)

如果您想用它启动命令,

su需要-c

/bin/su tomcat -c whatever_command

答案 2 :(得分:1)

这很可能是将$CATALINA_HOME变量更改为/bin的结果。

startup.sh调用catalina.sh脚本,该脚本取决于作为特定目录的$CATALINA_HOME。我肯定建议将其更改回CATALINA_HOME=/usr/share/apache-tomcat-7.0.26,然后将/bin添加回命令调用。 Tomcat严重依赖于CATALINA_HOME环境变量。

希望有所帮助。

编辑:你仍然需要考虑Mat的答案,这应该只是修复你现在得到的文件未找到错误。