脚本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是所有字段