Is Tomcat running?
TomcatTomcat 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_
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
- Connectivity to your tomcat instance
- Gather some basic statistics
- 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 anothergrep
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