【发布时间】:2020-10-08 12:05:24
【问题描述】:
我想创建一个 bash/shell 脚本,使用 jboss-cli 监控 Wildfly 的 JVM 内存使用情况 因此,我需要在 for 循环中获取主机并获取每个主机的 Wildfly 服务器。然而,启动/连接 jboss-cli 需要几秒钟的时间并且会给 CPU 带来压力。这使得脚本非常慢。在交互式 jboss-cli 会话中发送命令非常快。
有没有办法只连接一次 jboss-cli 并将输入命令发送到该活动会话?我需要命令的输出才能继续执行脚本。
当前脚本:
# List all hosts:
hosts="$(jboss-cli.sh -c --controller=servername:9990 --command=":read-children-names(child-type=host)" | grep " " | awk '{print $1}' | sed 's/,//g' | sed 's/"//g')"
# Loop through hosts results:
for host in $hosts
{
#List all servers:
servers="$(jboss-cli.sh -c --controller=servername:9990 --command="/host=$host:read-children-names(child-type=server)" | grep " " | awk '{print $1}' | sed 's/,//g' | sed 's/"//g')"
# Loop through server results:
for server in $servers
{
# check if server is running:
serverstate=$(jboss-cli.sh -c --controller=servername:9990 --command="/host=$host/server=$server:read-attribute(name=server-state)" | grep "result" | awk '{print $3}' | sed 's/"//g')
if [ $serverstate = "running" ]
then
#Do a check etc. etc.
fi
}
}
【问题讨论】:
-
除了开始的帖子:有 3 台主机,每台 50 台 Wildfly 服务器,因此目前意味着 +/- 300 次创建 jboss-cli 连接。
标签: bash shell jboss wildfly jboss-cli