当前位置: 首页 > 面试题库 >

从Shell脚本调用JMX MBean方法

高弘光
2023-03-14
问题内容

是否有任何库允许我从Shell脚本调用JMX
MBean方法。我们通过JMX公开了一些操作/管理命令,我们可以让管理员使用JConsole或VisualVM,但最好将某些任务留给自动化。在这种自动化中,我们希望能够在运行的服务器上调用JMX
MBean方法,最好是从Shell脚本中调用。


问题答案:

可以使用以下命令行JMX实用程序:

  1. jmxterm-似乎是功能最齐全的实用程序。
  2. cmdline-jmxclient-在WebArchive项目中使用似乎很简单(并且自2006年以来就没有开发)
  3. Groovy脚本和JMX-提供了一些非常强大的JMX功能,但需要使用Groovy和其他库设置。
  4. JManage命令行功能 -(缺点是它需要运行的JManage服务器来代理命令)

Groovy JMX示例:

import java.lang.management.*
import javax.management.ObjectName
import javax.management.remote.JMXConnectorFactory as JmxFactory
import javax.management.remote.JMXServiceURL as JmxUrl

def serverUrl = 'service:jmx:rmi:///jndi/rmi://localhost:9003/jmxrmi'
String beanName = "com.webwars.gameplatform.data:type=udmdataloadsystem,id=0"
def server = JmxFactory.connect(new JmxUrl(serverUrl)).MBeanServerConnection
def dataSystem = new GroovyMBean(server, beanName)

println "Connected to:\n$dataSystem\n"

println "Executing jmxForceRefresh()"
dataSystem.jmxForceRefresh();

cmdline-jmxclient示例:

如果您有

  • MBean:com.company.data:type=datasystem,id=0

使用一个称为:

  • jmxForceRefresh()

然后,您可以编写一个简单的bash脚本(假设您下载了cmdline-
jmxclient-0.10.3.jar
并放置在与脚本相同的目录中):

#!/bin/bash

cmdLineJMXJar=./cmdline-jmxclient-0.10.3.jar
user=yourUser
password=yourPassword
jmxHost=localhost
port=9003

#No User and password so pass '-'
echo "Available Operations for com.company.data:type=datasystem,id=0"
java -jar ${cmdLineJMXJar} ${user}:${password} ${jmxHost}:${port} com.company.data:type=datasystem,id=0

echo "Executing XML update..."
java -jar ${cmdLineJMXJar} - ${jmxHost}:${port} com.company.data:type=datasystem,id=0 jmxForceRefresh


 类似资料:
  • 问题内容: 如何从外壳脚本内部执行Java方法? 问题答案: 您只能调用该方法。设计您的方法,使其调用所需的方法。 当我说 调用 方法时,您不会显式调用它。调用它是Java程序的唯一入口点。 如果您的班级看起来像: 您可以使用以下命令行在您可以找到的目录中调用from (如果您位于下面显示的结构的目录中): 如果要从其他目录(请参见下面的目录结构)执行此操作,则必须设置类路径。 为了清楚起见,请采

  • 问题内容: 我试图弄清楚如何从Shell脚本调用Python函数。 我有一个具有多个功能的Python文件,我需要在我的shell脚本中使用它们返回的值。有没有办法做到这一点。 我这样做是为了使用Python读取配置文件并在shell中获取值。还有其他更好的方法来实现这一目标。 包含: 我需要将Python函数返回的值存储在shell变量中。 问题答案: 您可以通过要求Python解释器打印结果来

  • 用途:使用php将命令直接输入minecraft服务器控制台 我正在尝试使用php脚本(从浏览器运行)来执行shell脚本。当我从终端运行php时,它就可以工作了!但在浏览器中,什么都不会发生。 从终端运行时,我得到一个“数组0”,但浏览器给我一个“数组1” 问题是什么?一旦我运行了shell,之后的一切不应该像在终端上一样工作吗?(shell脚本内部的内容是否重要?) shell拥有所有rx权限

  • 6. Shell脚本的调试方法 Shell提供了一些用于调试脚本的选项,如下所示: -n 读一遍脚本中的命令但不执行,用于检查脚本中的语法错误 -v 一边执行脚本,一边将执行过的脚本命令打印到标准错误输出 -x 提供跟踪执行信息,将执行的每一条命令和结果依次打印出来 使用这些选项有三种方法,一是在命令行提供参数 $ sh -x ./script.sh 二是在脚本开头提供参数 #! /bin/sh

  • 问题内容: 如何从python代码调用Shell脚本? 问题答案: 该子模块将帮助你。 显而易见的例子: 其中是一个简单的shell脚本,它是此运行的返回值。

  • 本文向大家介绍详解Shell脚本中调用另一个Shell脚本的三种方式,包括了详解Shell脚本中调用另一个Shell脚本的三种方式的使用技巧和注意事项,需要的朋友参考一下 主要以下有几种方式: Command Explanation fork 新开一个子 Shell 执行,子 Shell 可以从父 Shell 继承环境变量,但是子 Shell 中的环境变量不会带回给父 Shell。 exec 在同