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/\r$//' 文件名