Is Tomcat running?

Tomcat

Tomcat Problem Overview


Interested to know how people usually check to see if Tomcat is running on a Unix environment.

I either check that the process is running using

ps -ef | grep java
ps -ef | grep logging

or i check that the port number is active

netstat -a | grep 8080

is there a better way of checking that Tomcat is running? The above seem to be to be a 'hacky' way of checking that Tomcat is running.

Tomcat Solutions


Solution 1 - Tomcat

On my linux system, I start Tomcat with the startup.sh script. To know whether it is running or not, i use

ps -ef | grep tomcat  

If the output result contains the whole path to my tomcat folder, then it is running

Solution 2 - Tomcat

try this instead and because it needs root privileges use sudo

sudo service tomcat7 status

Solution 3 - Tomcat

Why grep ps, when the pid has been written to the $CATALINA_PID file?

I have a cron'd checker script which sends out an email when tomcat is down:

kill -0 `cat $CATALINA_PID` > /dev/null 2>&1
if [ $? -gt 0 ]
then
    echo "Check tomcat" | mailx -s "Tomcat not running" [email protected]
fi

I guess you could also use wget to check the health of your tomcat. If you have a diagnostics page with user load etc, you could fetch it periodically and parse it to determine if anything is going wrong.

Solution 4 - Tomcat

netstat -lnp | grep 8080 would probably be the best way, if you know Tomcat's listening port. If you want to be certain that is is functional, you will have to establish a connection and send an HTTP request and get a response. You can do this programatically, or using any web browser.

Solution 5 - Tomcat

You can check the status of tomcat with the following ways:

ps -ef | grep tomcat  

This will return the tomcat path if the tomcat is running

netstat -a | grep 8080

where 8080 is the tomcat port

Solution 6 - Tomcat

If tomcat is installed locally, type the following url in a browser window: { localhost:8080 }

This will display Tomcat home page with the following message. > ## If you're seeing this, you've successfully installed Tomcat. Congratulations! ##

If tomcat is installed on a separate server, you can type replace localhost by a valid hostname or Iess where tomcat is installed.

The above applies for a standard installation wherein tomcat uses the default port 8080

Solution 7 - Tomcat

Create a Shell script that checks if tomcat is up or down and set a cron for sh to make it check every few minutes, and auto start tomcat if down. Sample Snippet of code below

TOMCAT_PID=$(ps -ef | awk '/[t]omcat/{print $2}')
echo TOMCAT PROCESSID $TOMCAT_PID

if [ -z "$TOMCAT_PID" ]
then
    echo "TOMCAT NOT RUNNING"
    sudo /opt/tomcat/bin/startup.sh
else
   echo "TOMCAT RUNNING"
fi

Solution 8 - Tomcat

I always do

tail -f logs/catalina.out

When I see there

INFO: Server startup in 77037 ms

then I know the server is up.

Solution 9 - Tomcat

wget url or curl url where url is a url of the tomcat server that should be available, for example: wget http://localhost:8080. Then check the exit code, if it's 0 - tomcat is up.

Solution 10 - Tomcat

I've found Tomcat to be rather finicky in that a running process or an open port doesn't necessarily mean it's actually handling requests. I usually try to grab a known page and compare its contents with a precomputed expected value.

Solution 11 - Tomcat

Are you trying to set up an alert system? For a simple "heartbeat", do a HTTP request to the Tomcat port.

For more elaborate monitoring, you can set up JMX and/or SNMP to view JVM stats. We run Nagios with the SNMP plugin (bridges to JMX) to check Tomcat memory usage and request thread pool size every 10-15 minutes.

http://tomcat.apache.org/tomcat-6.0-doc/monitoring.html

Update (2012):

We have upgraded our systems to use "monit" to check the tomcat process. I really like it. With very little configuration it automatically verifies the service is running, and automatically restarts if it is not. (sending an email alert). It can integrate with the /etc/init.d scripts or check by process name.

Solution 12 - Tomcat

Since my tomcat instances are named as tomcat_ . For example. tomcat_8086, I use

ps aux | grep tomcat

Other method is using nc utility

nc -l 8086 (port number )

Or

ps aux | grep java

Solution 13 - Tomcat

Try this command

ps -ef | awk '/[t]omcat/{print $2}' 

It will return the pid if tomcat is running.

Solution 14 - Tomcat

tomcat.sh helps you know this easily.

tomcat.sh usage doc says:

>no argument: display the process-id of the tomcat, if it's running, otherwise do nothing

So, run command on your command prompt and check for pid:

$ tomcat.sh

Solution 15 - Tomcat

$ sudo netstat -lpn |grep :8080

To check the port number

$ ps -aef|grep tomcat

Is any tomcat is running under the server.

tsssinfotech-K53U infotech # ps -aef|grep tomcat

> root 9586 9567 0 11:35 pts/6 00:00:00 grep --colour=auto tomcat

Solution 16 - Tomcat

Basically you want to test

  1. Connectivity to your tomcat instance
  2. Gather some basic statistics
  3. Whether the unix process is running

I will evaluate first 2 options as the 3rd one has been sufficiently answered already.

easiest is just to develop a webpage on your WebApp that gathers some basic metrics, and have a client that can read the results or detect connectivity issues.

For doing so, you have several issues

Solution 17 - Tomcat

Here are my two cents.

I have multiple tomcat instances running on different ports for my cluster setup. I use the following command to check each processes running on different ports.

/sbin/fuser 8080/tcp

Replace the port number as per your need.

And to kill the process use -k in the above command.

  • This is much faster than the ps -ef way or any other commands where you call a command and call another grep on top of it.
  • Works well with multiple installations of tomcat ,Or any other server that uses a port as a matter of fact running on the same server.

The equivalent command on BSD operating systems is fstat

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionziggyView Question on Stackoverflow
Solution 1 - TomcatThai TranView Answer on Stackoverflow
Solution 2 - TomcatKemboiView Answer on Stackoverflow
Solution 3 - TomcatdogbaneView Answer on Stackoverflow
Solution 4 - TomcatMichael GoldshteynView Answer on Stackoverflow
Solution 5 - TomcatDhanish JoseView Answer on Stackoverflow
Solution 6 - TomcatLokanathView Answer on Stackoverflow
Solution 7 - TomcatDevendra DoraView Answer on Stackoverflow
Solution 8 - TomcatkonkitView Answer on Stackoverflow
Solution 9 - TomcatDiklaView Answer on Stackoverflow
Solution 10 - TomcatAlex HowanskyView Answer on Stackoverflow
Solution 11 - TomcatWill GlassView Answer on Stackoverflow
Solution 12 - TomcatHimanshu ChauhanView Answer on Stackoverflow
Solution 13 - TomcatAlinView Answer on Stackoverflow
Solution 14 - TomcatTechflashView Answer on Stackoverflow
Solution 15 - TomcatBatchu BhargavaView Answer on Stackoverflow
Solution 16 - TomcatYoYoView Answer on Stackoverflow
Solution 17 - TomcatRaja AnbazhaganView Answer on Stackoverflow