写几个好用的Linux脚本

xsync

集群通常需要同步配置文件,是不是可以写个脚本快速同步配置文件呢?
这里 xsync 脚本是基于 rsync 的。相对于scp,rsync做文件夹复制时速度更快,因为rsync只对有差异文件做更新,而scp是把所有文件都复制过去。

安装rsync

[root@flink01 ~]# yum install -y rsync

xsync脚本编写
我这写在常用用户的bin目录下了,之后所有基本我也会写在该目录。xsync脚本内容如下:

[liuwen@flink01 opt]$ cd ~/bin
[liuwen@flink01 bin]$ pwd
/home/liuwen/bin
[liuwen@flink01 bin]$ ll
总用量 16
-rwxrwxrwx. 1 liuwen liuwen  13 8月  28 01:00 jpsall
-rwxrwxrwx. 1 liuwen liuwen 438 8月  15 08:11 kafka.sh
-rwxrwxrwx. 1 liuwen liuwen 741 8月  15 08:14 xsync
-rwxrwxrwx. 1 liuwen liuwen 570 8月  15 07:20 zk.sh
[liuwen@flink01 bin]$ cat xsync
#!/bin/bash

#1. 判断参数个数
if [ $# -lt 1 ]
then
    echo Not Enough Arguement!
    exit;
fi

#2. 遍历集群所有机器
for host in flink01 flink02 flink03 flink04
do
    echo ====================  $host  ====================
    #3. 遍历所有目录,挨个发送

    for file in $@
    do
        #4. 判断文件是否存在
        if [ -e $file ]
            then
                #5. 获取父目录
                pdir=$(cd -P $(dirname $file); pwd)

                #6. 获取当前文件的名称
                fname=$(basename $file)
                ssh $host "mkdir -p $pdir"
                rsync -av $pdir/$fname $host:$pdir
            else
                echo $file does not exists!
        fi
    done
done

[liuwen@flink01 bin]$ 

放开 /root/bin/xsync 权限

[root@flink01 bin]# chmod +x xsync

**运行测试:同步Hadoop的配置文件

[liuwen@flink01 hadoop]$ pwd
/opt/hadoop-3.3.1/etc/hadoop
[liuwen@flink01 hadoop]$ ~/bin/xsync ./hadoop

连接 flink02,看下 flink02 是否有该文件!

如果脚本写在 某个环境变量PATH的某个路径下,则该脚本可以在任意文件下直接使用。

查看环境变量PATH

[root@flink01 ~]# echo $PATH
/opt/jdk1.8.0_291/bin:/opt/hadoop-3.3.1/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

jspall

我们经常要查询集群中运行的程序,如果你觉得在每台服务器上使用jps命令太麻烦,就可以写个jspall的脚本了。脚本内容如下:

#!/bin/bash

#遍历集群所有机器
for host in flink01 flink02 flink03 flink04
do
    echo ---------- $host jps ------------
    ssh $host "jps"
done

运行测试

[liuwen@flink01 bin]$ ./jpsall
---------- flink01 jps ------------
3968 QuorumPeerMain
6603 Jps
---------- flink02 jps ------------
3890 QuorumPeerMain
6427 Jps
---------- flink03 jps ------------
3841 QuorumPeerMain
6390 Jps
---------- flink04 jps ------------
6368 Jps
3823 QuorumPeerMain
[liuwen@flink01 bin]$

你可能感兴趣的:(写几个好用的Linux脚本)