linux下xsync和xcall脚本及使用xcall jps遇到的一些小问题

xsync:

#!/bin/sh
# 获取输入参数个数,如果没有参数,直接退出
pcount=$#
if((pcount==0)); then
        echo no args...;
        exit;
fi

# 获取文件名称
p1=$1
fname=`basename $p1`
echo fname=$fname
# 获取上级目录到绝对路径
pdir=`cd -P $(dirname $p1); pwd`
echo pdir=$pdir
# 获取当前用户名称
user=`whoami`
# 循环
for((host=1; host<=2; host++)); do
        echo $pdir/$fname $user@slave$host:$pdir
        echo ==================slave$host==================
        rsync -rvl $pdir/$fname $user@slave$host:$pdir
done
#Note:这里的slave对应自己主机名,需要做相应修改。另外,for循环中的host的边界值由自己的主机编号决定。

xcall:

#!/bin/bash
pcount=$#
if((pcount==0));then
        echo no args;
        exit;
fi

echo -------------localhost----------
$@
for((host=1; host<=2; host++)); do
        echo ----------slave$host---------
        ssh slave$host $@
done
#Note:这里的slave对应自己主机名,需要做相应修改。另外,for循环中的host的边界值由自己的主机编号决定。

脚本想要直接使用就必须放在 /usr/local/bin目录下

两个脚本都需要使用chmod 777 文件名 来修改权限

使用xcall jps命令时可能会出现下面这种情况:

前提:本机可以正常运行jps命令

 这个问题是因为在脚本目录下需要放置jps的软链接,命令如下:

 ln -s /opt/module/jdk1.8.0_261/bin/jps jps

这里的jps路径要换成自己的,一般在自己jdk安装目录下的bin文件夹里

此时再使用xsync jps命令将软链接分发到子结点上,接着就可以运行xcall jps

 问题完美解决!

--------------------------------------------------------------------------------------分割线----------------------------------------------------------------------------------------------

解决坏的解释器问题,命令:

sed -i 's/ $//' 文件名

原文地址:https://www.cnblogs.com/dd110343/p/14295031.html