flume启动脚本

1、脚本编写与执行
为了执行方便,我们也可以通过自定义脚本实现flume后台的运行(实际上,该脚本就是执行的命令../flume-ng agent -c ../conf -f “agent脚本文件” --name agent&)。同时方便flume脚本自启动等功能的修改。

#!/bin/bash
#echo "begin start flume..."
#flume的安装根目录(根据自己情况,修改为自己的安装目录)
path=/home/software/apache-flume-1.9.0-bin
echo "flume home is :$path"
#flume的进程名称,固定值(不用修改)
JAR="flume"
#flume的配置文件名称(根据自己的情况,修改为自己的flume配置文件名称)
Flumeconf="kafka2hdfs.conf"
#定义的soure名称
agentname="agent"
function start(){
    echo "begin start flume process ...."
    #查找flume运行的进程数
    num=`ps -ef|grep java|grep $JAR|wc -l` 
    #判断是否有flume进程运行,如果有则运行执行nohup命令
    if [ "$num" = "0" ] ;then
        $path/bin/flume-ng agent -c $path/conf -f $path/conf/$Flumeconf --name $agentname  &
        echo "start success...."
        echo "日志路径: $path/logs/bi-bigdata/flume/flume.log"
    else
        echo "进程已经存在,启动失败,请检查....."
        exit 0
    fi
}
function stop(){
    echo "begin stop flume process.."
    num=`ps -ef|grep java|grep $JAR|wc -l`
    #echo "$num...."
    if [ "$num" != "0" ];then
        #正常停止flume
        ps -ef|grep java|grep $JAR|awk '{print $2;}'|xargs kill
        echo "进程已经关闭..."
    else
        echo "服务未启动,无须停止..."
    fi
}
function restart(){
    #echo "begin stop flume process .."
    #执行stop函数
    stop
    #判断程序是否彻底停止
    num='ps -ef|grep java|grep $JAR|wc -l'
    #stop完成之后,查找flume的进程数,判断进程数是否为0,如果不为0,则休眠5秒,再次查看,直到进程数为0
    while [ $num -gt 0 ];do
        sleep 5
        num='ps -ef|grep java|grep $JAR|wc -l'
    done
    echo "flume process stoped,and starting..."
    #执行start
    start
    echo "started...."
}
#case 命令获取输入的参数,如果参数为start,执行start函数,如果参数为stop执行stop函数,如果参数为restart,执行restart函数
case "$1" in
    "start")
        start
        ;;
    "stop")
        stop
        ;;
    "restart")
        restart
        ;;
    *)
        ;;
esac


以上脚本命名成.sh文件,命名为 flume.sh  ,存放路径为 /local。同时注意修改脚本权限

chmod -R 755 flume.sh

调用start 函数:
 

sh /local/flume.sh start


调用 stop命令

sh /local/flume.sh stop


调用重启命名

sh /local/flume.sh restart


以上脚本即可完成flume的start,stop,restart,并且在后台运行的需求。

2、其他
(1)对于执行sh ./xxx.sh出现:“Syntax error: “(” unexpected”的解决方法(☆)

代码对于标准bash而言没有错,因为Ubuntu/Debian为了加快开机速度,用dash代替了传统的bash,是dash在捣鬼,解决方法就是取消dash。

sudo dpkg-reconfigure dash


#在选择项中选No,搞定了!
或者不添加sh直接执行./xxx.sh也可以执行shell脚本

猜你喜欢

转载自blog.csdn.net/xieedeni/article/details/120530905
今日推荐