我有一个这样的 bash 脚本:
#!/bin/bash
while true; do
sudo tcpdump -i eth0 -w dump.pcap -c 1500 &
chromium-browser --app http://domain.com &
sleep 60
killall chromium-browser
sudo killall tcpdump
# do some stuff with pcap file
# it basically converts the pcap to plain text using tshark
# then a PHP script parses the plain text
sleep 240
done
它工作正常。但有时,无论出于何种原因,什么都不会被杀死,脚本就会卡在那个循环步骤中。它实际上什么都不做,不占用任何资源。似乎脚本正在等待被杀死的东西。
我试过限制 tcpdump 捕获的数据包,但是没有用。tcpdump 正常完成其工作,无需被杀死,但脚本不会杀死 chromium 并且不会继续执行其余代码。
有没有办法检测一个步骤是否花费太长时间,然后简单地杀死所有东西并进入下一步?
更新
这it is a long code
它使用 tshark 将 pcap 文件转换为纯文本,并且 PHP 脚本解析纯文本。问题不在于这部分,因为 tshark 从未被调用过,也从未被调用过 PHP 脚本。在那之前一切都停止了。
增加睡眠
它不会重现问题。