[hadoop]shell脚本执行jps时:-bash: jps: command not found

问题描述

我构建了hadoop集群。我们一定会写一个shell脚本去每一个节点上去jps,查看每个节点的进程情况。(这是改正之后的脚本)

#!/bin/bash
conf=/root/sh/cluster.conf

#${1}和${2}的作用是接受脚本的第一个参数和第二个参数
tag=${1}
cmd=${2}

#-f参数是判断cluster.conf存不存在
if [ -f $conf ]
then
  #反引号意味着执行这一行时会首先执行反引号中的命令
  #反引号中的作用是获取到部署了标识服务的服务器ip列表
  for server in `cat ${conf} | grep -v "#" | grep ${tag} | cut -d "," -f 1`
  do
    echo "*******************$server***************************"
    #此脚本的核心命令,作用将双引号中的命令发给$server服务器去执行并将结果返回
    ssh $server "source ~/.bash_profile;source /etc/profile;${cmd}"
  done
else
  echo "Erro:conf does not exist"
fi

本来应该是这样的

[root@hadoop1 sh]# sh excute.sh hdfs "jps"
*******************192.168.16.10***************************
7167 Jps
*******************192.168.16.11***************************
7023 Jps
*******************192.168.16.12***************************
14139 Jps

开始运行这段程序的时候会弹出一个错误:-bash: jps: command not found

解决方案:

错误原因:
在shell脚本写的ssh到其他节点的时候默认是不加载配置文件的。linux并不能去找到java中jps的命令。

解决方案一:

	在ssh到其他节点的时候source 一下配置文件。
	具体操作为:ssh hadoop$host “source /etc/profile;jps”

解决方案二:

	在ssh到其他节点的时候输入jps命令下的绝对路径。
	在笔者的linux的jdk的绝对路径为:/opt/module/jdk1.8.0_144/bin这个目录下就有jps的命令。
	具体操作为:ssh hadoop$host “/opt/module/jdk1.8.0_144/bin/jps”

解决方案三:

	 在当前用户的家目录中输入命令ll -a会显示隐藏文件,修改配置文件.bashrc。
	 .bashrc 是当你登入shell时执行
     在.bashrc里面加入source /etc/profile就行了。
     但是这种方法不推荐,容易出错

运行结果:

[root@hadoop1 ~]# excute.sh hdfs "jps"
*******************192.168.16.10***************************
7411 NameNode
7833 Jps
7548 DataNode
*******************192.168.16.11***************************
7250 Jps
7108 DataNode
7212 SecondaryNameNode
*******************192.168.16.12***************************
7121 DataNode
7188 Jps
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

酸甜lemon

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值