故障排查:通过ssh远程执行命令时报错未找到命令

news/2025/1/12 3:06:22/

博客主页:https://tomcat.blog.csdn.net
博主昵称:农民工老王
主要领域:Java、Linux、K8S
期待大家的关注💖点赞👍收藏⭐留言💬
家乡

目录

  • 故障详情
  • 问题原因
  • 解决方案
    • 命令使用全路径
    • 修改~/.bashrc

故障详情

最近收到测试同事的反馈,在通过ssh远程执行命令是遇到“未找到命令”的报错。如下图所示:
请添加图片描述单独远程执行lsof命令也报错。

在这里插入图片描述
但远程服务器的lsof命令是正常的,直接在远程服务器中运行第一张图片中的命令也没有任何报错。

在这里插入图片描述

问题原因

造成这个问题是因为bash有四种模式,分别是 interactive + login shell 、 interactive + non-login shell、 non-interactive + login shell、 non-interactive + non-login shell。而通过ssh远程执行命令时,采用的是non-interactive + non-login shell模式。这种情况下,bash无交互未登录,执行命令时不会调用/etc/profile,而是只会执行用户家目录下的.bashrc,也就是~/.bashrc。而PATH信息一般存储在/etc/profile。只加载~/.bashrc就会缺失PATH变量的设置。

解决方案

根据问题产生原因,有以下两种解决方案:

命令使用全路径

通过全路径方式调用可以避开PATH找不到的问题。
在这里插入图片描述
如果不知道目标命令的绝对路径,可以通过whereis查看,如whereis lsof
在这里插入图片描述
如果报错来自脚本中的命令,就需要修改脚本文件。所以这种方法有一些局限性。

修改~/.bashrc

既然~/.bashrc缺少PATH信息,那我们在该文件中新增PATH信息就解决问题了。
在远程服务器上运行echo -e "\nexport PATH=$PATH" >> .bashrc可将PATH信息写入~/.bashrc
在这里插入图片描述


如需转载,请注明本文的出处:农民工老王的CSDN博客https://blog.csdn.net/monarch91 。


http://www.ppmy.cn/news/768165.html

相关文章

解决btool/CDC类 虚拟串口驱动无法安装的解决办法

请参考https://blog.csdn.net/lida2003/article/details/27982143

记一次线上kafka造成的事故

记一次线上kafka造成的事故 背景解决方案重置kafka的offset 背景 背景:所有的原始数据均存储在mysql,mysql会通过binlog将数据同步至kafka消息队列,但是有人将mysql中的数据进行删除(大概有2、3年的数据),…

5.3 legacy中断控制器驱动

legacy类型的中断控制器是一个一对多的中断控制器,他在注册之前需要事先在系统中分配相应的irq_desc 驱动代码编写 实验程序是虚拟的中断控制器驱动,它利用 GIC_SPI 210 号中断为父中断,利用一个随机数生成函数来模拟子中断控制器产生的中断…

linux启动ib驱动命令,linux安装IB驱动方法

一、准备 1、Linux操作系统7.6(根据实际情况变更,此处用redhat7.6系统举例) 2、驱动:MLNX_OFED_LINUX-4.6-1.0.1.1-rhel7.6-x86_64.tgz(根据实际情况变更,此处用redhat7.6系统举例) 二、解压缩 命令:tar -xzvf MLNX_OFED_LINUX-4.…

Linux内核驱动模块如何添加math.h

结论 Linux内核空间无法调用C库函数并且禁用FPU,可以放弃了。 原因:内核这么设计有利于上下文切换和调度。 解决方法 尝试过手动实现某些三角函数到我的文件中。发现只要涉及浮点数,虽然编译时不会error,但有一些warning如下&…

Linux驱动开发——正点原子IMX6ULL核心板ADS1256驱动开发

正点原子IMX6ULL核心板ADS1256驱动开发 一、修改设备树文件 查看正点原子IMX6ULL核心板和底板原理图,决定与 icm20608 共用 ecspi3。 找到 “imx6ull-alientek-emmc.dts” 和 “imx6ull-14x14-evk.dts”,在 “&iomuxc”下修改 “pinctrl_ecspi3”…

i.MX6ULL驱动开发 | 29 - 使用USB WIFI网卡(RTL8188EU)

一、USB无线网卡 插到电脑上看下型号是Realtek RTL8188EU版本: 二、添加驱动到Linux中 1. realtek驱动源码 使用正点原子资料包中的源码: 2. 删除内核自带的RTL8192CU驱动 根据正点原子教程描述,linux内核自带的驱动经过测试不稳定,所以手动添加驱动源码。 修改文件…

【Linux驱动开发】LCD 驱动实验

一、简介 Framebuffer 设备,Framebuffer(帧缓冲),简称 fb。 LCD 对应的设备文件是 /dev/fbX(X0~n)。在 Linux 中应用程序也是通过操作 RGB LCD 的显存来实现在 LCD 上显示字符、图片等信息。因为虚拟内存的存在,驱动程…