日志启动
1)代码参数说明
// 参数一:控制发送每条的延时时间,默认是0
Long delay = args.length > 0 ? Long.parseLong(args[0]) : 0L;
// 参数二:循环遍历次数
int loop_len = args.length > 1 ? Integer.parseInt(args[1]) : 1000;
2)将生成的jar包log-collector-0.0.1-SNAPSHOT-jar-with-dependencies.jar拷贝到hadoop002服务器/opt/module上,并同步到hadoop003的/opt/module路径下
xsync log-collector-1.0-SNAPSHOT-jar-with-dependencies.jar
3)在hadoop002上执行jar程序
java -classpath log-collector-1.0-SNAPSHOT-jar-with-dependencies.jar com.atguigu.appclient.AppMain >/opt/module/test.log
说明1:
java -classpath 需要在jar包后面指定全类名;
java -jar 需要查看一下解压的jar包META-INF/ MANIFEST.MF文件中,Main-Class是否有全类名。如果有可以用java -jar,如果没有就需要用到java -classpath
说明2:/dev/null代表linux的空设备文件,所有往这个文件里面写入的内容都会丢失,俗称“黑洞”。
标准输入0:从键盘获得输入 /proc/self/fd/0
标准输出1:输出到屏幕(即控制台) /proc/self/fd/1
错误输出2:输出到屏幕(即控制台) /proc/self/fd/2
4)在/tmp/logs路径下查看生成的日志文件
cd /tmp/logs/
ls
app-2020-06-10.log
将日志数据传入系统黑洞中,1表示标准输出到控制台,2表示标准输出错误信息,0表示键盘输入
java -classpath log-collector-1.0-SNAPSHOT-jar-with-dependencies.jar com.atguigu.appclient.AppMain 1>/dev/null 2>/dev/null
2给1,1扔入黑洞,全都丢入黑洞,避免占用磁盘空间
java -classpath log-collector-1.0-SNAPSHOT-jar-with-dependencies.jar com.atguigu.appclient.AppMain >/dev/null 2>&1
去掉全类名的写法,把jar包解压后,打开META-INF\MANIFEST.MF,如果最后一行Main-Class:跟着全类名,就可以这样使用,与打包的插件功能有关
java -jar log-collector-1.0-SNAPSHOT-jar-with-dependencies.jar >/dev/null 2>&1
集群日志生成启动脚本
1)在/home/shsxt/bin目录下创建脚本lg.sh
vim lg.sh
2)在脚本中编写如下内容
.#! /bin/bash
for i in hadoop002 hadoop003
do
ssh $i "java -classpath /opt/module/log-collector-1.0-SNAPSHOT-jar-with-dependencies.jar com.atguigu.appclient.AppMain $1 $2 >/dev/null 2>&1 &"
done
3)修改脚本执行权限
chmod 777 lg.sh
4)启动脚本
lg.sh
5)分别在hadoop002、hadoop003的/tmp/logs目录上查看生成的数据
ls
app-2020-06-10.log
ls
app-2020-06-10.log
远程登录,执行传入的所有命令
.# !/bin/bash
for i in hadoop002 hadoop003 hadoop004
do
echo "========== i "$*"
done