最初是在虚拟机搭建Hadoop3.x集群,使用命令ssh hadoop001 jps,出现:

bash: jps: command not found

但是单独测试jps命令和先ssh登录再测试jps命令都是可行的。
这说明配置的 /etc/profile文件中的环境变量是有效的,
对ssh远程执行命令这种方式是无效的,profile文件没有调用到。
于是通过技术文章了解ssh远程执行命令的原理。
https://blog.csdn.net/whitehack/article/details/51705889


了解到ssh 远程执行命令采用bash的non-interactive + non-login shell模式。这种模式下,bash没有登录启动,然后创建一个shell,执行完脚本或命令就退出,不与用户交互。它不会调用/etc/profile文件,而是会去调用用户的home目录下的.bashrc文件,即~/.bashrc。从两个文件开头也可以看出:

于是解决思路就是在~/.bashrc文件中加入对应的环境变量:

export JAVA_HOME=/home/ubuntu/module/jdk
export PATH=$PATH:$JAVA_HOME/bin

然后我把环境变量添加在.bashrc文件最后,保存:

但是!!!ssh远程命令反馈依然是jps: command not found,我逐一检查,重复看文章,多次测试,无一成功,真是哭死。甚至想要使用ln软链接将jps链接到/usr/local/bin,但这种方式治标不治本。而多次探索中我无意中看到.bashrc文件开头:

意思是如果不是运行交互式,就不做任何事情,而ssh远程命令就是非交互式,会不会执行完这段就退出了呢?于是我又测试,在这段代码前后都加入输出代码:

结果如我所料:

最终得出解决方案:在~/.bashrc文件中# If not running interactively, don't do anything这段话前面加入环境变量。

再执行命令source ~/.bashrc激活文件

测试成功!!!!

关于ssh远程执行命令出现xxx: command not found问题相关推荐

  1. 【linux】ssh 远程执行命令

    1.概述 转载并且补充:ssh 远程执行命令 SSH 是 Linux 下进行远程连接的基本工具,但是如果仅仅用它来登录那可是太浪费啦!SSH 命令可是完成远程操作的神器啊,借助它我们可以把很多的远程操 ...

  2. SSH远程执行命令环境变量问题

    SSH命令格式 usage: ssh [-1246AaCfgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec][-D [bind_address:] ...

  3. linux 带环境变量 远程执行,SSH远程执行命令环境变量问题

    SSH命令格式 usage: ssh [-1246AaCfgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec] [-D [bind_address: ...

  4. ssh远程执行命令 linux,Linux下使用SSH远程执行命令方法收集

    说明:可以做SSH免密登录之后执行,这样可以省去每次执行输入密码的提示. 对于简单的命令: 如果是简单执行几个命令,则: ssh user@remoteNode "cd /home ; ls ...

  5. 【linux】ssh 远程执行命令自动输入密码方式

    ssh 远程执行命令自动输入密码方式 场景: 由于多台机必须要登陆执行命令,需要使用密钥一台台登录,所以每次登陆机器的时候都需要手动输入域账号密码.密码太长且复杂,手动输入容易输错,故使用脚本来做这个 ...

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

    解决SSH远程执行命令找不到环境变量的问题 参考文章: (1)解决SSH远程执行命令找不到环境变量的问题 (2)http://www.cnblogs.com/zhenyuyaodidiao/p/928 ...

  7. day26-3 模拟ssh远程执行命令

    目录 模拟ssh远程执行命令 服务器 客户端 模拟ssh远程执行命令 实现在客户端输入执行命令后,返回执行命令的信息.如输入dir,显示当前目录下的所有文件和文件夹 服务器 import socket ...

  8. 远程启动hadoop,ssh远程执行命令报错!hdfs命令不存在!

    1.任务:远程启动hadoop集群. #!/usr/bin/env bash HADOOP_HOME=/root/hadoop/hadoop-3.3.2 if [ $# -lt 1 ] thenech ...

  9. ssh 远程执行命令

    SSH 是 Linux 下进行远程连接的基本工具,不光可以登录,也可以远程操作.接下来我们详细讲解一些常用的情况. 1.执行简单的命令: 1)查看某台主机上的磁盘使用情况: $ ssh root@1. ...

最新文章

  1. vonic 安装的坑
  2. SpringMVC简单项目配置
  3. python中函数提高代码执行速度吗_为什么Python代码在一个函数中运行得更快?
  4. 16位汇编 使用word ptr和byte ptr的寻址方式
  5. DotLucene源码浅读笔记(1) : Lucene.Net.Analysis
  6. JS中怎样比较两个 时分秒 格式的时间大小
  7. win7 右键增加打开 powershell选项
  8. java jmf 视屏监控的核心代码_JMF(Java Media Framework)使用摄像头
  9. すぬけ君の地下鉄旅行 / Snuke's Subway Trip(AtCoder-2069)
  10. Java生产环境下性能监控与调优详解 第7章 JVM层GC调优
  11. ARM、X86/Atom、MIPS、PowerPC 介绍
  12. 【经验分享】嵌入式C语言开发如何有效地排查内存泄露的疑难问题?
  13. SQL往表里添加字段
  14. 详解php与mysql的关系
  15. 测试工程师如何规划自己的职业生涯
  16. LCD显示异常分析——撕裂(tear effect)
  17. java spel_Java spring SPEL表达式注入
  18. 软考笔记——第七章--数据结构
  19. USB摄像头测试网址
  20. 【微信开发】基于微信公众号的早起签到程序

热门文章

  1. 联想扬天V15(i5 8265U/8GB/256GB/MX110)电脑 Hackintosh 黑苹果efi引导文件
  2. 全国城市中心点(全)
  3. 小米fortnite_我如何仅用1,001美元(与我12岁的孩子)构建自己的Fortnite DIY游戏平台
  4. js jquery阻止事件冒泡
  5. 游戏程序员养成计划 (更新2013.3.19)
  6. 通用jsonResult封装返回结果
  7. 抖音小店开店怎么样选择类目和商品?
  8. Vue3.0基础(一)
  9. 添加账号php,添加子账号示例代码
  10. vs2008 MFC使用DataGrid控件绑定数据库