学习Hadoop,想写个脚本查看集群各节点的运行情况:
#!/bin/bash
for host in hadoop1 hadoop2 hadoop3
do
echo ==================== $host ====================
ssh $host $JAVA_HOME/bin/jps
done
执行后报错:
==================== hadoop1 ====================
bash: jps: 未找到命令
==================== hadoop2 ====================
bash: jps: 未找到命令
==================== hadoop3 ====================
bash: jps: 未找到命令
原因:
参考别人的博客了解到:通过SSH远程执行命令和脚本不会加载/etc/profile文件,而会去用户的HOME目录检查.bashrc
并加载,所以得不到环境。
解决方法:
1 直接写绝对路径
#!/bin/bash
for host in hadoop1 hadoop2 hadoop3
do
echo ==================== $host ====================
ssh $host $JAVA_HOME/bin/jps
done
2 在用户的~/.bashrc
里增加Java路径(采用了第一种方式,第二种未试过)
参考自:https://blog.csdn.net/weixin_45772874/article/details/121270823