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.
This question is related to
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.
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
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.
ps -ef
way or any other commands where you call a command and call another grep
on top of it.The equivalent command on BSD
operating systems is fstat
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
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
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
Basically you want to test
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
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.
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
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.
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.
try this instead and because it needs root privileges use sudo
sudo service tomcat7 status
Try this command
ps -ef | awk '/[t]omcat/{print $2}'
It will return the pid if tomcat is running.
$ 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
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
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.
Source: Stackoverflow.com