linux命令执行批处理脚本,例如jps,hostname...

本文介绍了一个用于远程执行Shell脚本的实用工具,通过简单的脚本实现跨主机执行命令的功能,并解决了在执行特定Java命令时遇到的问题。

1.脚本命令

vim xcall.sh
#!/bin/bash
# 获取控制台指令
cmd=$*

# 判断指令是否为空
if [ ! -n "$cmd" ]
then
    echo "command can not be null!"
    exit
fi

# 获取当前登录用户
user=`whoami`

# 在从机执行命令,需要根据具体集群情况配置
hosts=(master slave1 slave2)
for host in ${hosts[@]}
do
    echo "======current host is $host======"
    ssh $user@$host $cmd
done

echo "execute successfully !"

2.运行hostname远程命令:

3.运行jps

执行报错,显示command not found,解决方法,先找到java的安装位置,可以使用:

whereis java

 jps的命令就在安装的bin目录下,然后添加jps的软连接到/usr/bin目录下:

cd /usr/bin

# 添加软连接
ln -s -f /home/hadoop/java/jdk1.8.0_161/bin/jps jps

执行命令,成功:

 

在 JVM 启动时出现 `Unrecognized VM option 'jps.track.ap.dependencies'` 错误,通常是因为 JVM 无法识别该选项,这可能是由于以下原因导致的: - 使用了不兼容的 JVM 版本。某些 JVM 参数仅在特定版本的 JDK 中支持,尝试在不兼容的版本中使用会导致识别失败。 - 参数拼写错误或参数本身已过时,不再被当前 JVM 支持。 - 该参数属于某个特定的 JVM 实现(如特定厂商的 JDK),在 OpenJDK 或其他实现中无法识别。 针对 `jps.track.ap.dependencies`,这个参数通常与 JDK 工具链中的 `jps`(Java Virtual Machine Process Status Tool)相关,用于追踪应用程序类路径依赖。该参数可能在某些 JDK 版本中已被移除或默认不再支持。 ### 解决方案 1. **检查 JDK 版本** 确认当前使用的 JDK 版本是否支持该参数。对于较新的 JDK 版本(如 JDK 17 及以上),部分旧参数已被弃用或删除。可以通过以下命令查看 JDK 版本: ```bash java -version ``` 如果使用的是 JDK 17 或更高版本,`jps.track.ap.dependencies` 可能已被移除,建议移除该参数或调整启动脚本[^3]。 2. **更新或调整启动脚本中的 JVM 参数** 如果该参数是手动添加到启动脚本中的,请尝试将其移除或替换为等效的替代参数。例如,某些依赖追踪功能可能已被 JFR(Java Flight Recorder)或其他工具替代。 3. **切换 JDK 实现或版本** 如果确认该参数是特定于某个 JDK 发行版(如 Oracle JDK)的功能,而当前使用的是 OpenJDK,则可以尝试切换到兼容的 JDK 实现,或者降级到支持该参数的 JDK 版本。 4. **使用 JVM 启动参数兼容性检查工具** 可以使用 `java -XX:+PrintFlagsFinal` 命令查看当前 JVM 支持的所有参数,以确认是否包含 `jps.track.ap.dependencies`。如果未列出,则说明该参数不被支持。 ```bash java -XX:+PrintFlagsFinal | grep jps.track.ap.dependencies ``` 5. **避免手动添加未知参数** 如果该参数是通过某种构建工具或 IDE 自动生成的,请检查相关配置文件(如 `pom.xml`、`build.gradle`、IDE 启动配置等),并移除不必要的 JVM 参数。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值