有兴趣了解人们通常如何检查 Tomcat 是否在 Unix 环境中运行。
检查进程是否正在运行
ps -ef | grep java ps -ef | grep logging
或者我检查端口号是否处于活动状态
netstat -a | grep 8080
有没有更好的方法来检查 Tomcat 是否正在运行?上面的内容似乎是检查 Tomcat 是否正在运行的一种“粗俗”的方法。
我发现 Tomcat 相当挑剔,因为正在运行的进程或打开的端口并不一定意味着它实际上在处理请求。我通常尝试获取一个已知的页面,并将其内容与预先计算的预期值进行比较。
如果您知道 Tomcat 的监听端口,那么 netstat -lnp | grep 8080可能是最好的方法。如果您希望确定它是功能性的,则必须建立连接并发送 HTTP 请求并获得响应。您可以通过编程方式或使用任何 Web 浏览器来完成此操作。
netstat -lnp | grep 8080
为什么是 grep ps,当 PID 已经写入到 $CATALINA_PID文件?
grep ps
$CATALINA_PID
我有一个 cron的检查器脚本,当 tomcat 关闭时,它会发送一封电子邮件:
cron
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来检查你的公猫的健康状况。如果您有一个带有用户负载等的诊断页面,您可以定期获取它并解析它,以确定是否出现了错误。
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 的状态:
如果运行 tomcat,这将返回 tomcat 路径
8080在哪里
尝试使用这个代码,因为它需要 root 权限,所以使用 Sudo
sudo service tomcat7 status
我一向如此
tail -f logs/catalina.out
当我看到那里
INFO: Server startup in 77037 ms
那我就知道服务器启动了。
wget url或 curl url 其中 url 是应该可用的 tomcat 服务器的 url,例如: wget http://localhost:8080. 然后检查退出代码,如果它的0-公猫是起来了。
wget url
curl url
wget http://localhost:8080
$ 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。
基本上你想测试
我将评估前两个选项,因为第三个选项已经得到了充分的回答。
最简单的方法就是在 WebApp 上开发一个收集一些基本指标的网页,并拥有一个可以读取结果或检测连接性问题的客户端。
对于这样做,您有几个问题
这是我的建议。
对于我的集群设置,有多个 tomcat 实例在不同的端口上运行。我使用以下命令检查在不同端口上运行的每个进程。
/sbin/fuser 8080/tcp
根据需要替换端口号。
要终止该进程,请在上面的命令中使用 -k。
-k
ps -ef
grep
BSD操作系统上的等效命令是 fstat
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可以帮助您轻松地了解这一点。
tomcat.sh
Sh 的使用文档说:
没有参数: 显示 tomcat 的 process-id,如果它正在运行,则不执行任何操作
因此,在命令提示符下运行 command 并检查 pid:
$ tomcat.sh