Linux系统群起脚本 | 快速入门

问题描述:

在进行Linux测试时编写脚本是必不可少的。最近经常使用Linux,感觉太频繁地敲击键盘有些累了,于是想到了Shell脚本。可以把太多的命令写成一个脚本,这样每次执行一遍 shell文件,就可以省去了敲击键盘的时间。于是在网上搜了一些有关Linux下脚本编程的内容。

下面是编写shell脚本的具体步骤:

一.创建shell脚本

    首先创建一个目录,它将托管我们所有的 bash 脚本。

脚本文件新建可以用touch命令,也可以直接用文本编辑器如vi、vim等新建并编辑,文件名为*.sh。shell脚本文件的名称可以任意,但为了避免被误认为是普通文件,后缀名为.sh代表是一个shell脚本文件(例如后缀名为.py代表是一个python文件)我一般会把shell脚本放进usr/local/bin里能更方便我们使用。

二.编写内容 

我将以zookeeper群起脚本进行讲解

内容如下:

#!/bin/bash

case $1 in
"start"){
    for i in hadoop01hadoop02 hadoop03
    do
        echo "------------- $i -------------"
        ssh $i "/opt/module/zookeeper-3.5.7/bin/zkServer.sh start"
    done 
};;
"stop"){
    for i in hadoop01 hadoop02 hadoop03
    do
        echo "------------- $i -------------"
        ssh $i "/opt/module/zookeeper-3.5.7/bin/zkServer.sh stop"
    done
};;
"status"){
    for i in hadoop01 hadoop02 hadoop03
    do
        echo "------------- $i -------------"
        ssh $i "/opt/module/zookeeper-3.5.7/bin/zkServer.sh status"
    done
};;
esac
  1. “#!/bin/bash”必须放在第一行
  2.   

    这一行被称为shebang 行,在某些文献中,它被称为hashbang 行,这是因为它以两个字符hash ‘#’ 和bang ‘!’ 开头。

    符号#!用来告诉系统它后面的参数是用来执行该文件的程序。

  3. 2、 注释
    在进行shell编程时,以#开头的句子表示注释,直到这一行的结束。

    如同其他编程语言一样,我们在编写脚本时也应该尽可能地添加注释,那么即使相当长的时间内没有使用该脚本,我们也能在很短的时间内明白该脚本的作用及工作原理。

    "start"){
        for i in hadoop01hadoop02 hadoop03
        do
            echo "------------- $i -------------"
            ssh $i "/opt/module/zookeeper-3.5.7/bin/zkServer.sh start"
        done 
    };;#集群启动

    "stop"){
        for i in hadoop01 hadoop02 hadoop03
        do
            echo "------------- $i -------------"
            ssh $i "/opt/module/zookeeper-3.5.7/bin/zkServer.sh stop"
        done
    };; #集群关闭

    3.、变量
    在其他编程语言中您必须使用变量。

    在shell编程中,所有的变量都由字符串组成,并且您不需要对变量进行声明。要赋值给一个变量,您可以这样写:变量名=值

    取出变量值可以加一个美元符号($)在变量前面

    比如我们这里变量是i

    "start"){
        for i in hadoop01hadoop02 hadoop03
        do
            echo "------------- $i -------------"
            ssh $i "/opt/module/zookeeper-3.5.7/bin/zkServer.sh start"
        done 
    };;

    就在i前加个美元符号 

    4、流程控制语句

    我们zookeper群起脚本里使用的是

    for 条件循环语句

    for的语法格式为:

    for x in xx
    do ...
    done

    使用 for循环语句从列表文件中读取多个用户名。

    5.将 shell 脚本添加到 PATH(以便它可以从任何目录运行)

    • 前面使用 ./zk.sh 来运行脚本;如果省略前导 ./;./ 代表当前目录

      Bash 认为你正在尝试运行名为 scripts.sh 的命令。当你在终端上运行任何命令时,shell 就在存储在 PATH 变量中的一组目录中查找该命令。

    •  若显示权限不足,赋予权限chmod xxx.sh

    如果你想从任何地方运行你的 bash 脚本,就像它是一个常规的 Linux 命令,需要将你的 shell 脚本的位置添加到 PATH 变量中。

    获取脚本目录的位置(假设在同一目录中),使用 PWD 命令:
    pwd

    3.使用 export 命令将脚本目录添加到 PATH 变量。

export PATH=$PATH:/local
4.我们这里zookeeper集群启动有三个命令

stop(关闭) start(开始) status(查看状态)

解决问题:

最后在我启动zookeeper集群时,报了以下错误:

 

        每台主机的java_home都已经配置,java-version也能正常执行,且单独运行zkServer.sh start可以正常启动zookeeper。

        这时我们进入每台主机的zookeeper下的bin目录

修改zkServer.sh文件,在文件开始部分加上自己的java路径,export JAVA_HOME=/opt/modlue/jdk1.8.0_162 

我们在启动一下集群: 

最后查看一下: 

 

嘻嘻,成功!!!

这周我们的脚本学习就结束了喔 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值