0

我正在尝试使用我的脚本启动一个 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

读取PID函数:

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
}
4

1 回答 1

1

我猜你可能会调用你的tcpdump函数而不是系统范围的包。例如,在您的脚本中将其重命名run_tcpdump为。虽然不确定这是根本原因。

还要确保tcpdump在启动脚本之前没有进程。你确定第一个进程不是来自以前的运行吗?

于 2015-12-21T12:30:09.450 回答