Flume 日志采集启动停止脚本

  1. 背景
    一般我们在实际的生产环境中,进行日志采集的时候一般都是,写一个脚本的,不可能一台一台机器上去登录进行开启flume或者停止flume,那样效率就太低了,于是我们就需要开发一个脚本来启动和关闭。

    #! /bin/bash
    
    case $1 in
    "start"){
           
           for i in s102 s103
           do
                   echo " --------启动 $i 采集flume-------"
                   ssh $i "nohup /opt/module/flume/bin/flume-ng agent --conf-file /opt/module/flume/conf/file-flume-kafka.conf --name a1 -Dflume.root.logger=INFO,LOGFILE >/dev/null 2>&1 &"
           done
    };;	
    "stop"){
           
           for i in s102 s103
           do
                   echo " --------停止 $i 采集flume-------"
                   ssh $i "ps -ef | grep file-flume-kafka | grep -v grep |awk '{print \$2}' | xargs kill"
           done
    
    };;
    esac
    
  2. 这里面的启动脚本比较简单,就是执行flume启动命令就可以了,不过这里面停止脚本需要好好说明一下了

    1. 简单说说其它的代码含义
      nohub,该命令可以在你推出账号/关闭终端之后继续运行相应的进程。nobub就是不挂起的意思,不挂断地运行命令。
      /dev/null代表linux的空设备文件,所有往这个文件里面写入的内容都会丢失,俗称“黑洞”。
      标准输入0:从键盘获得输入/proc/self/fd/0。
      标准输入1:输出到屏幕(既控制台)/proc/self/fd/1。
      错误输出2:输出到屏幕(既控制台)/proc/self/fd/2。
    2. 这个停止脚本有点难道,不是一下就能想到的,因为flume 没有提供专门的停止命令,一般我们都是使用kill -9 杀死,不过需要知道pid号,但是每次启动都会有不同的pid号,那么我们就需要获取这个pid号码,于是我们使用下面这个命令。
      ps -ef | grep file-flume-kafka | grep -v grep |awk '{print \$2}' | xargs kill
      
      那我们一步一步解析一下上面这个命令,当你执行ps -ef | grep file-flume-kafka命令的时候会查到两个进程一个是flume的一个是本条命令的进程,那么我们需要把这个命令过滤掉,于是在后面加上 | grep -v grep 。
      在这里插入图片描述
      但是我们看看上面命令查询出来结果第二个参数是pid,那么我们使用 | awk ‘{print $2}’ 查询出pid就可以了
      在这里插入图片描述
      最后一个参数 | xargs kill 就是和kill -9 的意思一样,如果想真正的了解这些命令的具体参数建议出门左拐好好研究一番。

你可能感兴趣的:(笔记,脚本,flume)