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