关于通过ssh后台脚本启动几台主机的flume

脚本1

#!/bin/bash
case $1 in
"start"){
		for i in hadoop101 hadoop102
		do
		echo "---------正在启动 $i 的flume---------------"
		ssh $i  "nohup /opt/module/flume/bin/flume-ng agent  -f /opt/module/flume/conf/file-flume-kafka.conf -n a1 
		-Dflume.root.logger=INFO,LOGFILE >/dev/null  2>&1 &"
		done
};;
"stop"){
		for i in hadoop101 hadoop102
		do
		echo "----------正在停止$i的flume-----------------"
		ssh $i  "ps -ef | grep file-flume-kafka.conf | grep -v grep | awk '{print $2}' | xargs kill > /dev/null 2>&1 "
		done
};;
esac

1、这个脚本因为没有指定了配置文件  -c  , 后面的-Dflume.root.logger  定向到黑洞,所有日志都不保存;

2、nohup ssh $i  "nohup /opt/module/flume/bin/flume-ng agent  -f /opt/module/flume/conf/file-flume-kafka.conf -n a1   -Dflume.root.logger=INFO,LOGFILE >/opt/module/flume/log.txt  2>&1 $"

     这个也没有指定配置文件,但后面Dflume.root.logger=INFO,LOGFILE指定了把日志输出到哪,所有日志都会保存

3、nohup ssh $i  "nohup /opt/module/flume/bin/flume-ng agent -c /opt/module/flume/conf -f /opt/module/flume/conf/file-flume-kafka.conf -n a1    $"

   这个指定了配置文件,默认会存在配置文件里要求的目录里面

4、如果同时 -c   和 Dflume.root.logger=INFO,LOGFILE 同时出现  以-c配置文件里要求的目录为主

在flume里面conf文件下面有个log4j的配置文件,那么它默认会在启动目录的 ./logs/flume.log来记录日志。ssh执行命令,默认在用户的家目录启动;

这里使用了   nohup    &

这种写法,其实是是后台挂起运行,因为如果不使用,把当前shell窗口干掉 后,就会出现flume也关掉了;

关于   > /dev/null  2>&1

/dev/null代表linux的空设备文件,所有往这个文件里面写入的内容都会丢失,俗称“黑洞”。

标准输入0    从键盘获得输入 /proc/self/fd/0

标准输出1    输出到屏幕(即控制台) /proc/self/fd/1

错误输出2    输出到屏幕(即控制台) /proc/self/fd/2

这里把标准输出1全部  重定向到黑洞   把错误输出定向到1  ,即全部去了黑洞

关于这些

https://www.cnblogs.com/520playboy/p/6275022.html

关于awk  默认切分用的  空格 或者 tab  ,切分完默认是从1开始,0是所有字段

猜你喜欢

转载自blog.csdn.net/qq_42506914/article/details/88861320