注意首先需要主機和從機安裝命令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命令時可能會出現下面這種情況:

前提:本機可以正常運行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

這里出現問題的原因是: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