命令在bash脚本中多次启动

时间:2015-12-21 12:19:51

标签: bash shell scripting sh ash

我试图用我的脚本启动一个tcpdump。但我总是得到不止一个。那是我的ps输出:

 1260 root     tcpdump -i br0 -C 1024 -w /media/usbhd-sdc2/pcaps/abfrage2.pcap
 1267 root     tcpdump -i br0 -C 1024 -w /media/usbhd-sdc2/pcaps/abfrage2.pcap

这是我的代码,我检查正常运行时间是否与我的开始时间相同。 如果它是相同的,它应该启动一个tcpdump,它也应该保存PID 但为什么它会启动第二个,这是否会发生,因为我的函数readPID不够快?

 if [[ $timestart == $Zeit ]] || [[ "$pid1" != "" ]];then
                echo "First"
                if [[ $timeend != $Zeit ]];then
                        echo "second"
                        if [ "$pid1" == "" ];then
                                echo "third"
                                if [ "$port" != "" ];then
                                        echo "fourth"
                                        run_tcpdump port
                                        pid1=$(readPID1)
                                        echo $pid1
                                else

ReadPID功能:

readPID1(){
ps -eo pid,args|awk '/abfrage2/ && ! /awk/{print $1}'
}

更新

Tcpdump功能:

run_tcpdump(){
if [ "$1" == "port" ];then
  sudo tcpdump port $port -i br0 -C 1024 -w /media/usbhd-sd[b-c]2/pcaps/abfrage2.pcap &
else
  sudo tcpdump -i br0 -C 1024 -w /media/usbhd-sd[b-c]2/pcaps/abfrage2.pcap &
fi
}

0 个答案:

没有答案