Linux集群同步文件脚本(xsync)以及同步命令脚本(xcall)的安装以及问题解决办法

Linux集群同步文件脚本(xsync)以及同步命令脚本(xcall)的安装以及问题解决办法注意首先需要主机和从机安装命令rsync(yum install rsync -y) 一、同步文件脚本(xsync) 作用是将文件或者文件夹同步到集群上的其他从机 1 #!/bin/sh 2 # 获取输入参数个数,如果没有参数,直接退出 3 pcount=$# 4 if((pcount==0));

注意首先需要主机和从机安装命令rsync(yum install rsync -y)
一、同步文件脚本(xsync)
—-作用是将文件或者文件夹同步到集群上的其他从机—-
 1 #!/bin/sh
 2 # 获取输入参数个数,如果没有参数,直接退出
 3 pcount=$#
 4 if((pcount==0)); then
 5 echo no args...;
 6 exit;
 7 fi
 8 
 9 # 获取文件名称
10 p1=$1
11 fname=`basename $p1`
12 echo fname=$fname
13 # 获取上级目录到绝对路径
14 pdir=`cd -P $(dirname $p1); pwd`
15 echo pdir=$pdir
16 # 获取当前用户名称
17 user=`whoami`
18 # 循环
19 for((host=1; host<=2; host++)); do
20 echo $pdir/$fname $user@slave0$host:$pdir
21 echo ==================slave0$host==================
22 rsync -rvl $pdir/$fname $user@slave0$host:$pdir
23 done
24 echo "complate !"

!红色字体那行里
slave0是集群子节点名称里不变的部分,变更的部分用循环来获得!
二、执行命令脚本(xcall)
—-作用是在所有从机上执行相同的命令—-
 1 #!/bin/bash
 2 pcount=$#
 3 if((pcount==0));then
 4 echo no args;
 5 exit;
 6 fi
 7 
 8 echo -------------localhost----------
 9 $@
10 for((host=1; host<=2; host++)); do
11 echo ----------slave0$host---------
12 ssh slave0$host $@
13 done
14 echo "excute successfully !"

一般在  /usr/local/bin目录创建文件,名称可以自己定,创建两个文件然后把以上脚本文件复制进去

最后执行脚本,脚本执行使用chmod命令(chmod 777 文件名全称)

 
三.错误问题解决:
1.使用xcall jps命令时可能会出现下面这种情况:
Linux集群同步文件脚本(xsync)以及同步命令脚本(xcall)的安装以及问题解决办法
前提:本机可以正常运行jps命令
这个问题是因为在脚本目录下需要放置jps的软链接,命令如下:
ln -s /
opt/module/jdk1.8.0_261/bin/jps jps
这里红色的jps路径要换成自己的,一般在自己jdk安装目录下的bin文件夹里
此时再使用xsync jps命令将软链接分发到子结点上,接着就可以运行xcall jps
2.shell脚本执行报错:/bin/bash^M: bad interpreter: No such file or directory
Linux集群同步文件脚本(xsync)以及同步命令脚本(xcall)的安装以及问题解决办法
这里出现问题的原因是:shell脚本格式必须是unix才行,如果脚本是在windows上编写完成传到Linux服务器上的,所以一执行就报错:
windows环境下的文件是dos格式,即每行结尾以\r\n来标识,而linux下的文件是unix格式,行尾则以\n来标识
查看该文件格式:
1.cat -A filename,如果输出结果中行末尾是^M$,则是dos格式,如果行末尾只是$,则是unix格式。
2.vim filename,编辑文件,执行“:set ff”,若执行结果为fileformat=dos则为dos格式,若执行结果为fileformat=unix则为unix格式。
3.od -t x1 filename,以16进制查看文件,若输出结果中存在“0d 0a”则为dos格式,如果只有“0a”则为unix格式。其中“0d”即为回车符“\r”,“0a”即为换行符“\n”。
所以要修改该shell脚本格式,方法如下:
1.sed -i “s/\r//” filename 或sed -i “s/^M//” filename,直接将回车符替换为空字符串。
2.vim filename,编辑文件,执行“: set ff=unix”,将文件设置为unix格式,然后执行“:wq”,保存退出。
3.dos2unix filename或busybox dos2unix filename,如果提示command not found,可以使用前两种方法
 
文档引用:
https://www.cnblogs.com/dd110343/p/14295031.html
https://blog.csdn.net/weixin_39309402/article/details/99732688
 

今天的文章Linux集群同步文件脚本(xsync)以及同步命令脚本(xcall)的安装以及问题解决办法分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/54651.html

(0)
编程小号编程小号
上一篇 2023-08-29 08:11
下一篇 2023-08-29

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注