执行ssh $host jps 报错:“bash: jps: 未找到命令”
问题:
学习Hadoop,想写个脚本查看集群各节点的运行情况:
#!/bin/bash
for host in hadoop1 hadoop2 hadoop3
do
echo ==================== $host ====================
ssh $host 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
分类:
Linux
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步