#!/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啟動命令 ,可參考大數據分類進行學習