把这个命令放到bash脚本中

在google的帮助下,测量多播stream带宽的脚本

这里是tcpdump -tnn -i eth1 -f multicast | sort | uniq -c | awk '{print $3,"> "$5,$1*$NF/2*8/1024 " Kbps"}' | awk '$1 > 10' & sleep 2s && pkill -HUP -f tcpdump tcpdump -tnn -i eth1 -f multicast | sort | uniq -c | awk '{print $3,"> "$5,$1*$NF/2*8/1024 " Kbps"}' | awk '$1 > 10' & sleep 2s && pkill -HUP -f tcpdump

事实certificate,罚款,除了我需要打回来回到提示。 我知道这是&&问题,但不知道如何解决它。

我怎样才能把它放到shell脚本中。 也许添加$ var的秒数。

尝试使用timeout在持续时间后终止tcpdump:

 (timeout -s HUP 2 tcpdump -tnn -i eth1 -f multicast || true) | sort | uniq -c | awk '{print $3,"> "$5,$1*$NF/2*8/1024 " Kbps"}' | awk '$1 > 10' 

编写脚本:

 #!/bin/bash if ! [[ "$1" =~ ^[0-9]+$ ]]; then echo "Usage: $0 <number of seconds>" exit 1 fi (timeout -s HUP $1 tcpdump -tnn -i eth1 -f multicast || true) | sort | uniq -c | awk '{print $3,"> "$5,$1*$NF/2*8/1024 " Kbps"}' | awk '$1 > 10' 

你不需要按Enter键退出。 这只是一个美好的问题。 那是因为你的输出“​​覆盖”你的terminal(你仍然可以input任何命令并按回车 – 它将被执行)。

要“修复”这个布局问题,你可以尝试追加“; sleep 1; echo”到你的行,所以它看起来像:

 tcpdump -tnn -i eth1 -f multicast | sort | uniq -c | awk '{print $3,"> "$5,$1*$NF/2*8/1024 " Kbps"}' | awk '$1 > 10' & sleep 2s && pkill -HUP -f tcpdump; sleep 1; echo 

希望有所帮助。

这里是你的variablesbash脚本:

 #!/bin/bash SLEEPTIME=5 tcpdump -tnn -i eth0 -f multicast | sort | uniq -c | awk -va=$SLEEPTIME '{print $3,"> "$5,$1*$NF/a*8/1024 " Kbps"}' | awk '$1 > 10' & sleep $SLEEPTIME && pkill -HUP -f tcpdump; sleep 1; echo