解决ssh $host ‘jps’ bash: jps: command not found 问题
问题描述
使用 ssh $host jps
命令报错,连本机也会有这样的情况,但是分开使用并没有问题,即ssh $host下执行jps命令并不会报错。
原因
因为ssh远程连接到服务器的环境变量中不包含对应可执行文件的路径。需要在shell脚本中自己添加。把java的路径加上就行了。
解决
以下为五种解决方法
1、ssh $host source /etc/profile;jps
2、在有java环境变量的情况下,
[dev1@hadoop102 bin]$ ssh hadoop102 $PATH
bash: /usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/module/jdk1.8.0_212/bin:/opt/module/hadoop-3.1.3/bin:/opt/module/hadoop-3.1.3/sbin:/home/dev1/.local/bin:/home/dev1/bin: 没有那个文件或目录
使用命令
ssh $host $JAVA_HOME/bin/jps
3、尝试着把root权限赋给hadoop用户
[root@hadoop102 hadoop]# vim /etc/sudoers
在91行91 shift g
添加
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
dev1 ALL=(ALL) ALL
4、把配置文件中的信息追加到~/.bashrc文件里面
[dev1@hadoop102 profile.d]$ sudo cat /etc/profile >> ~/.bashrc
[dev1@hadoop102 profile.d]$ ssh hadoop102 jps
50943 Jps
5、在 /etc/profile.d 下创建my_env.sh文件,写入
#JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_212
export PATH=$PATH:$JAVA_HOME/bin
source /etc/profile