在shell脚本中for循环执行ssh操作远程主机命令执行失效的问题

首先看一下shell脚本:
#! /bin/bash
for i in node2 node1
do
ssh $i ‘java -classpath /opt/file/project_datawarehouse/log-collector-1.0-SNAPSHOT-jar-with-dependencies.jar com.jiahua.appclient.AppMain $1 $2 > /opt/file/project_datawarehouse/test.log & exit’
echo $i;
echo “xxxxxxxxxxxxxxxxx”;
done

期间经历了N多问题,此处做个记录。
**1.**本机node1执行无效,node2没反应->粗心大意把$i写成了$1。

**2.**本机node1执行有效,node2无反应->后面没有exit,我也不知道为什么T-T,好像是进入了远程主机操作而非本机。

**3.**本机本机node1执行有效,node2产生了test.log文件但是为空。其实这个点也不算弄懂了,因为查到的是bash有四种模式,然后可能和登录后的环境变量有关系,然后又查到了一个文档说shell和非shell直接环境变量的关系,如图:
在这里插入图片描述
这是在红黑联盟中的一个先驱者写的,不点名了。
然后我就大胆的试了试,前面也试过很多种改法,但是直到这种生效才结束--------------------》
把/etc/profile里自己加的那些环境变量(最主要应该还是Java环境变量)添加到了/etc/bashrc文件里,source /etc/bashrc 一下,再执行就没问题了。
具体是在本机加还是远程机加就得自己去试了,因为我都加上了各自的环境变量。
卡了两天的小BUG终于解决,开心!

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值