通常控制台在执行某个jar包时,屏幕会刷个不停,直到程序执行完毕,类似这种:
那么就可以编写一个脚本,把输出的内容全部扔进“黑洞”。此脚本模拟在hadoop102和hadoop103两台主机上循环执行jar文件:
#!/bin/bash
for i in hadoop102 hadoop103
do
ssh $i "java -jar /opt/module/applog/gmall2020-mock-log-2020-05-10.jar
1>/dev/null 2>/dev/null &"
done
解释一下:
- 标准输入0:从键盘获得输入 /proc/self/fd/0
- 标准输出1:输出到屏幕(即控制台) /proc/self/fd/1
- 错误输出2:输出到屏幕(即控制台) /proc/self/fd/2
- 2>&1:把2的数据传给1
- 放在最后的
&
:使命令在后台执行,这样就在前台执行其他的命令 - /dev/null代表linux的空设备文件,所有往这个文件里面写入的内容都会丢失,俗称“黑洞”。
于是就有了简化版
#!/bin/bash
for i in hadoop102 hadoop103; do
ssh $i "java -jar /opt/module/applog/gmall2020-mock-log-2020-05-10.jar >/dev/null 2>&1 &"
done