Tomcat正在运行吗?

时间:2010-10-15 16:25:23

标签: tomcat

有兴趣了解人们通常如何检查Tomcat是否在Unix环境中运行。

我要么使用

检查进程是否正在运行
ps -ef | grep java
ps -ef | grep logging

或我检查端口号是否有效

netstat -a | grep 8080

有没有更好的方法来检查Tomcat是否正在运行?以上似乎是检查Tomcat正在运行的“hacky”方式。

17 个答案:

答案 0 :(得分:78)

在我的linux系统上,我使用startup.sh脚本启动Tomcat。要知道它是否正在运行,我使用

ps -ef | grep tomcat  

如果输出结果包含我的tomcat文件夹的整个路径,那么它正在运行

答案 1 :(得分:63)

请尝试此操作,因为它需要root权限才能使用 sudo

sudo service tomcat7 status

答案 2 :(得分:51)

为什么grep ps,当pid写入$CATALINA_PID文件后?

我有一个cron'检查脚本,当tomcat关闭时会发送一封电子邮件:

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

我猜你也可以使用wget检查你的tomcat的健康状况。如果您有一个带有用户负载等的诊断页面,您可以定期获取它并解析它以确定是否出现任何问题。

答案 3 :(得分:13)

如果你知道Tomcat的监听端口,

netstat -lnp | grep 8080可能是最好的方法。如果您想确定功能是否正常,则必须建立连接并发送HTTP请求并获得响应。您可以以编程方式或使用任何Web浏览器执行此操作。

答案 4 :(得分:8)

如果在本地安装了tomcat,请在浏览器窗口中键入以下URL: {localhost:8080}

这将显示Tomcat主页,并显示以下消息。

  

如果你看到这个,你已经成功安装了Tomcat。恭喜!

如果tomcat安装在单独的服务器上,则可以键入      用安装了tomcat的有效主机名或Iess替换localhost。

以上适用于tomcat使用默认端口8080

的标准安装

答案 5 :(得分:6)

您可以通过以下方式检查tomcat的状态:

ps -ef | grep tomcat  

如果tomcat正在运行,这将返回tomcat路径

netstat -a | grep 8080

其中8080​​是tomcat端口

答案 6 :(得分:4)

创建一个Shell脚本,检查tomcat是up还是down,并为sh设置cron以使其每隔几分钟检查一次,并自动启动tomcat(如果已关闭)。代码示例片段

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

答案 7 :(得分:4)

wget urlcurl url 其中url是应该可用的tomcat服务器的URL,例如: wget http://localhost:8080。 然后检查退出代码,如果它是0 - tomcat已启动。

答案 8 :(得分:3)

我总是这样做

tail -f logs/catalina.out

当我看到那里

INFO: Server startup in 77037 ms

然后我知道服务器已启动。

答案 9 :(得分:3)

我发现Tomcat相当挑剔,因为正在运行的进程或开放端口并不一定意味着它实际上正在处理请求。我通常会尝试抓取一个已知页面并将其内容与预先计算的预期值进行比较。

答案 10 :(得分:2)

您是否尝试设置警报系统?对于简单的“心跳”,请对Tomcat端口执行HTTP请求。

要进行更精细的监控,您可以设置JMX和/或SNMP以查看JVM统计信息。我们使用SNMP插件运行Nagios(桥接到JMX)以检查Tomcat内存使用情况并每10-15分钟请求一次线程池大小。

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

更新(2012):

我们已将系统升级为使用“monit”来检查tomcat进程。我很喜欢。配置非常少,它会自动验证服务是否正在运行,如果不是,则会自动重新启动。 (发送电子邮件提醒)。它可以与/etc/init.d脚本集成或按进程名称检查。

答案 11 :(得分:1)

因为我的tomcat实例被命名为tomcat_。例如。 tomcat_8086,我用

class TestA {
  name: string;

  constructor(name:string){
    this.name = name;
  }

  getName(): string {
    return this.name;
  }

  getCName(): string {
    return TestA.prototype.constructor.name;
  }
}

let ta = new TestA('ta');

alert(ta.getCName());
// alerts TestA

其他方法是使用nc实用程序

ps aux | grep tomcat (端口号)

或者

nc -l 8086

答案 12 :(得分:0)

$ sudo netstat -lpn |grep :8080

检查端口号

$ ps -aef|grep tomcat

是否有任何tomcat在服务器下运行。

tsssinfotech-K53U infotech # ps -aef|grep tomcat
  

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

答案 13 :(得分:0)

尝试此命令

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

如果tomcat正在运行,它将返回pid。

答案 14 :(得分:0)

基本上你想测试

  1. 与tomcat实例的连接
  2. 收集一些基本统计数据
  3. unix进程是否正在运行
  4. 我将评估前2个选项,因为第3个选项已经得到了充分的回答。

    最简单的方法就是在WebApp上开发一个收集一些基本指标的网页,并让客户端可以读取结果或检测连接问题。

    为此,您有几个问题

答案 15 :(得分:0)

这是我的两分钱。

我有多个tomcat实例在不同的端口上运行以进行群集设置。我使用以下命令检查在不同端口上运行的每个进程。

/sbin/fuser 8080/tcp

根据需要更换端口号。

要在上面的命令中使用-k来终止进程。

  • 这比ps -ef方式或您调用命令的任何其他命令快得多,并在其上调用另一个grep
  • 适用于多个tomcat安装,或任何其他使用端口的服务器实际上在同一台服务器上运行。

BSD操作系统上的等效命令为fstat

答案 16 :(得分:0)

tomcat.sh可帮助您轻松地了解这一点。

tomcat.sh用法文档说:

  

不带参数:显示tomcat的进程号(如果正在运行),否则不执行任何操作

因此,请在命令提示符处运行命令并检查pid:

$ tomcat.sh