大数据组件 shell 脚本工具

2024-08-10 12:47:48 浏览数 (1)

循环

代码语言:shell复制
for xxx in xxxs
do
     ## 执行语句
     ## 一般执行语句是要写封装好的启停脚本或者是一些自定义的输出日志
done
  • xxxs 一般是主机IP 例子: 这个脚本是分别在(hadoop102 hadoop103 hadoop104)的/opt/module/zookeeper/bin/目录下启动zkServer.sh start命令,然后输出日志("$host zookeeper Server 正在启动......")
代码语言:shell复制
#!/bin/bash

for host in hadoop102 hadoop103 hadoop104
do
     ssh $host "source /etc/profile;/opt/module/zookeeper/bin/zkServer.sh start"
     echo "$host zookeeper Server 正在启动......"
done

函数

代码语言:shell复制
函数名 () {
    ## 方法体
    ## 一般是启动和关闭组件的一些命令
}

逻辑判断

if else

代码语言:shell复制
if 逻辑判断; then
        ## 执行语句
    else
        ## 执行语句
    fi    

case

代码语言:shell复制
case $1 in
    传递给脚本的参数 )
        # 执行语句(一般是一个方法)
    ;;
    传递给脚本的参数 )
         # 执行语句(一般是一个方法)
    ;;
    传递给脚本的参数 )
        # 执行语句(一般是一个方法)
    ;;
esac
  • $1 语句传递给脚本的第一个参数
  • 传递给脚本的参数 一般是start,stop,restart 之类的

Maxwell 启停脚本解析

这个脚本是一个用于管理Maxwell服务的简单Shell脚本,包含启动、停止和重启功能

代码语言:shell复制
#!/bin/bash

MAXWELL_HOME=/opt/module/maxwell

status_maxwell(){
    result=`ps -ef | grep com.zendesk.maxwell.Maxwell | grep -v grep | wc -l`
    return $result
}

start_maxwell(){
    status_maxwell
    if [[ $? -lt 1 ]]; then
        echo "启动Maxwell"
        $MAXWELL_HOME/bin/maxwell --config $MAXWELL_HOME/config.properties --daemon
    else
        echo "Maxwell正在运行"
    fi
}

stop_maxwell(){
    status_maxwell
    if [[ $? -gt 0 ]]; then
        echo "停止Maxwell"
        ps -ef | grep com.zendesk.maxwell.Maxwell | grep -v grep | awk '{print $2}' | xargs kill -9
    else
        echo "Maxwell未在运行"
    fi
}

case $1 in
    start )
        start_maxwell
    ;;
    stop )
        stop_maxwell
    ;;
    restart )
       stop_maxwell
       start_maxwell
    ;;
esac

1. 定义环境变量

代码语言:bash复制
MAXWELL_HOME=/opt/module/maxwell
  • 这里定义了一个环境变量 MAXWELL_HOME,指定了Maxwell安装的目录。

2. 函数 status_maxwell

代码语言:bash复制
status_maxwell(){
    result=`ps -ef | grep com.zendesk.maxwell.Maxwell | grep -v grep | wc -l`
    return $result
}
  • 这个函数检查Maxwell进程是否在运行。
  • ps -ef 列出所有进程。
  • grep com.zendesk.maxwell.Maxwell 查找与Maxwell相关的进程。
  • grep -v grep 确保不包括自己。
  • wc -l 计算返回的行数,即运行Maxwell的进程数。
  • return $result 将行数作为返回值(返回0表示没有启动,返回1表示启动了)。

3. 函数 start_maxwell

代码语言:bash复制
start_maxwell(){
    status_maxwell
    if [[ $? -lt 1 ]]; then
        echo "启动Maxwell"
        $MAXWELL_HOME/bin/maxwell --config $MAXWELL_HOME/config.properties --daemon
    else
        echo "Maxwell正在运行"
    fi
}
  • status_maxwell 函数中检查Maxwell状态。
  • 如果返回值小于1(即进程未运行),则执行启动命令。
  • 否则,输出“Maxwell正在运行”。

4. 函数 stop_maxwell

代码语言:bash复制
stop_maxwell(){
    status_maxwell
    if [[ $? -gt 0 ]]; then
        echo "停止Maxwell"
        ps -ef | grep com.zendesk.maxwell.Maxwell | grep -v grep | awk '{print $2}' | xargs kill -9
    else
        echo "Maxwell未在运行"
    fi
}
  • 检查Maxwell进程状态。
  • 如果存在运行的进程(大于0),则使用 kill -9 强制终止它们。
  • awk '{print $2}' awk 是一个强大的文本处理工具,这里用来提取进程信息。{print $2} 指的是输出每行的第二列,通常这是进程ID。
  • xargs 将标准输入的数据转换为命令行参数的工具。在这里,它将提取到的PID传递给 kill -9。
  • kill 用于终止进程
  • -9 强制杀死进程的信号
  • 否则,输出“Maxwell未在运行”。

5. 主逻辑

代码语言:bash复制
case $1 in
    start )
        start_maxwell
    ;;
    stop )
        stop_maxwell
    ;;
    restart )
       stop_maxwell
       start_maxwell
    ;;
esac
  • case 语句处理传递给脚本的第一个参数(如 start, stop, restart)。
  • 根据不同的命令调用相应的函数。

0 人点赞