ssh $host jps出现 “bash: jps: 未找到命令” 问题

近日写了一个脚本,想要通过一个命令就可以知道集群中所有的Java进程。

按照网上blog的提示,写了如下的脚本:

for host in host1, host2, host3
do
   echo ============$host==========
   ssh $host jps
done

但是,其中一台机器出现了找不到jps的问题。

但是,我手动ssh上那台机器然后jps是可以行得通。

根据网上blog,我了解到了其实ssh有两种不同的情况。

1. 通过SSH登录后再执行命令和脚本

这也是我们最常使用的方式。先ssh连接上了,再执行需要的命令。
Shell首先会加载/etc/profile文件,然后再尝试依次去加载下列三个配置文件之一,一旦找到其中一个便不再接着寻找:

~/.bash_profile
~/.bash_login
~/.profile

2. 通过SSH直接执行远程命令和脚本

这种方式会使用Bash的non-interactive + non-login shell模式,它会创建一个shell,执行完脚本之后便退出,不再需要与用户交互。

它不会去执行/etc/profile文件,而会去用户的HOME目录检查.bashrc并加载。

3. 解决方法

  1. 直接写绝对路径
for host in host1, host2, host3
do
   echo ============$host==========
   ssh $host $JAVA_HOME/bin/jps
done
  1. 在登录用户的~/.bashrc里增加Java路径

4. 参考资料

解决SSH远程执行命令找不到环境变量的问题

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值