雄猫在跑吗?

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

检查进程是否正在运行

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

或者我检查端口号是否处于活动状态

netstat -a | grep 8080

有没有更好的方法来检查 Tomcat 是否正在运行?上面的内容似乎是检查 Tomcat 是否正在运行的一种“粗俗”的方法。

597925 次浏览

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

如果您知道 Tomcat 的监听端口,那么 netstat -lnp | grep 8080可能是最好的方法。如果您希望确定它是功能性的,则必须建立连接并发送 HTTP 请求并获得响应。您可以通过编程方式或使用任何 Web 浏览器来完成此操作。

为什么是 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 端口执行 HTTP 请求。

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

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

更新(2012年) :

我们已经将系统升级为使用“ monit”来检查 tomcat 进程。我真的很喜欢。只需要很少的配置,它就可以自动验证服务是否正在运行,如果服务没有运行,它就会自动重新启动。(发送电子邮件提醒)。它可以与/etc/init.d 脚本集成,也可以通过进程名进行检查。

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

ps -ef | grep tomcat

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

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

这将显示带有以下消息的 Tomcat 主页。

如果您看到了这个,那么您已经成功地安装了 Tomcat。祝贺您!

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

以上内容适用于标准安装,其中 tomcat 使用默认端口8080

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

ps -ef | grep tomcat

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

netstat -a | grep 8080

8080在哪里

尝试使用这个代码,因为它需要 root 权限,所以使用 Sudo

sudo service tomcat7 status

我一向如此

tail -f logs/catalina.out

当我看到那里

INFO: Server startup in 77037 ms

那我就知道服务器启动了。

wget urlcurl url 其中 url 是应该可用的 tomcat 服务器的 url,例如: wget http://localhost:8080. 然后检查退出代码,如果它的0-公猫是起来了。

$ sudo netstat -lpn |grep :8080

检查端口号

$ ps -aef|grep tomcat

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

tsssinfotech-K53U infotech # ps -aef|grep tomcat

Root 95869567011:35 pt/600:00:00:00 grep —— color = auto tomcat

因为我的 tomcat 实例名为 tomcat _. ,例如. tomcat _ 8086,所以我使用

#

ps aux | grep tomcat

另一种方法是使用 nc 实用程序

nc -l 8086(端口号)

或者

ps aux | grep java

试试这个命令

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

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

基本上你想测试

  1. 与 Tomcat 实例的连接
  2. 收集一些基本的统计数据
  3. Unix 进程是否正在运行

我将评估前两个选项,因为第三个选项已经得到了充分的回答。

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

对于这样做,您有几个问题

这是我的建议。

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

/sbin/fuser 8080/tcp

根据需要替换端口号。

要终止该进程,请在上面的命令中使用 -k

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

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

创建一个 Shell 脚本来检查 tomcat 是向上还是向下,并为 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

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

Sh 的使用文档说:

没有参数: 显示 tomcat 的 process-id,如果它正在运行,则不执行任何操作

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

$ tomcat.sh