On 8/3/2012 12:38 PM, Shaw, Ray V CTR (US) wrote:
Konstantin Kolinko wrote:
Note that calling startup.sh and shutdown.sh is just a wrapper for
calling catalina.sh with arguments "start" and "stop" respectively.
I'd recommend co call catalina.sh directly instead of those wrapper
scripts.
Either java fails to start (and catalina.out is opened by shell as the
output stream of that process - it has nothing to do with Tomcat
itself), or it terminates when its parent process terminates due to
HUP signal.
To exclude the former, try replace your command with "catalina.sh run
-security", so that Tomcat starts interactively in the same shell.
I tried changing it to this:
/bin/su -- tomcat $CATALINA_HOME/bin/catalina.sh run -security
(as well as various permutations with the quotes remaining). I also put an
export before CATALINA_HOME, and have tried putting quotes around the stop
command (to no effect); all together, this should address the issues André
Warnier raised.
When I use "run", it works correctly from sudo, but stays attached to the terminal (and I
can't seem to find any combination of nohup, exec, and/or & that will start it detached; I can use
ctrl-z and bg, but that's ugly). When I use "start", I get the same issue as before.
As requested by Stefan Mayr, the output (normally) is this (exactly the same
for root and sudo):
bash-4.1# service tomcat7 start
DES encrypted or local terminal session
Using CATALINA_BASE: /opt/tomcat7
Using CATALINA_HOME: /opt/tomcat7
Using CATALINA_TMPDIR: /opt/tomcat7/temp
Using JRE_HOME: /usr/java/jdk6-64/
Using CLASSPATH:
/opt/tomcat7/bin/bootstrap.jar:/opt/tomcat7/bin/tomcat-juli.jar
Using Security Manager
Adding a -x to the /bin/sh at the top of catalina.sh didn't seem to indicate
any differences when running as root versus sudo.
Thanks everyone for your replies.
--Ray
Ray,
I've not checked to see if my scripts work with sudo, but they seem to
work as system startup / shutdown as well as from root.
My base start command looks like this:
$SU - $TOMCAT_USER -c "${CONFIG_OPTS} ${CAT_PID} ${TOMCAT_INSTANCE}
start" >> $SERVICE_LOG 2>&1
Please ignore the wrapping - it's all one line.
Now for some explanations
$SU - this is the su command to run
If you're running SELinux, you'll need to set this to /sbin/runuser.
$TOMCAT_USER - this is the user to run under
I run multiple Tomcat services, and sometimes it's nice to have a
service run as a different unprivileged user. Otherwise I have things
set up for a default user.
${CONFIG_OPTS} - per services configuration options
For each service I have a configuration file that sets bunches of items.
This includes CATALINA_HOME, CATALINA_BASE, JRE_HOME, and JAVA_HOME. The
service name reads this information from a configuration file of the
same name, validates the information, and creates the appropriate export
commands.
This gives me the option of running multiple JREs and multiple versions
of Tomcat all without editing shell scripts.
${CAT_PID} - per service PID file
This instructs catalina.sh to write its pid to a known file.
${TOMCAT_INSTANCE} - location of catalina.sh
This is based on the name of the script, and the location of
CATALINA_HOME / CATALINA_BASE.
$SERVICE_LOG - echos information about the service
This is where all of the startup stuff gets written. It's nice, since I
have a record for each service concerning what CATALINA_HOME (and
therefore version of Tomcat) it's based on, what version of Java it's
using, and when the current version was started. I can also get the time
last started from /var/run/tomcatn/servicename.
I suspect that instead of su, you need to use /sbin/runuser, and you
need to send the output somewhere (hence >> $SERVICE_LOG 2>&1 on my
start line).
My entire script is rather long, ugly, and took a while to write. I'm
not a shell script programmer, but it seems to be working well in
production on both CentOS 5.8 and 6.3.
Hope this gets you going in the right direction.
/mde/
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org