背景
一般我們在實際的生產環境中,進行日誌採集的時候一般都是,寫一個指令碼的,不可能一臺一臺機器上去登錄進行開啓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
這裏面的啓動指令碼比較簡單,就是執行flume啓動命令就可以了,不過這裏面停止指令碼需要好好說明一下了
ps -ef | grep file-flume-kafka | grep -v grep |awk '{print \$2}' | xargs kill
那我們一步一步解析一下上面這個命令,當你執行ps -ef | grep file-flume-kafka命令的時候會查到兩個進程一個是flume的一個是本條命令的進程,那麼我們需要把這個命令過濾掉,於是在後面加上 | grep -v grep 。