#!/bin/bash
#echo "begin start flume..."
#flume的安裝根目錄(根據自己情況,修改為自己的安裝目錄)
path=/sysware/apache-flume-1.8.0-bin
echo "flume home is :$path"
#flume的進程名稱,固定值(不用修改)
JAR="flume"
#flume的配置文件名稱(根據自己的情況,修改為自己的flume配置文件名稱)
Flumeconf="flume-conf.conf"
#定義的soure名稱
agentname="agent1"
function start(){
echo "begin start flume process ...."
#查找flume運行的進程數
num=`ps -ef|grep java|grep $JAR|wc -l`
#判斷是否有flume進程運行,如果有則運行執行nohup命令
if [ "$num" = "0" ] ;then
nohup $path/bin/flume-ng agent --conf conf -f $path/conf/$Flumeconf --name $agentname -Dflume.root.logger=INFO,console &
echo "start success...."
echo "日志路徑: $path/logs/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 ,存放路徑為 /sysware
調用start 函數:
sh /sysware/flume.sh start
調用 stop命令
sh /sysware/flume.sh stop
調用重啟命名
sh /sysware/flume.sh restart
以上腳本即可完成flume的start,stop,restart,並且在后台運行的需求。
此博客中涉及到一些flume,shell命令知識點
shell :函數、if 、while ,case、wc,管道符| 、sleep 等,可參考linux分類進行學習
flume:flume啟動命令 ,可參考大數據分類進行學習
