bash – tcpdump返回数据包之前的一秒延迟

使用Ubuntu,我正在尝试将tcpdump嗅探与来自客户端设备的自识别“ping”同步.问题是,通过看起来像tcpdump中的内置延迟,获得精确的启动和停止变得困难.这是我脚本的关键线:
sudo timeout .5s tcpdump -i wlan0 -e

当我设置超时以停止tcpdump之后,比如半秒(如我的例子中所示),不返回任何数据包.实际上,低于1.1s的任何值都不能返回数据包(而1.1和更长的工作时间非常好).

我已经尝试添加-n参数来抑制DNS,但这没有任何区别.我还尝试了两个完全不同的wifi卡(英特尔迅驰和TP-Link N900),以确保它不仅仅是一个硬件“功能”.

我不是开发人员,但我在tcpdump源代码搜索“延迟”,“延迟”和“超时”,但似乎没有出现任何负责任的东西.

有任何想法吗?

gnu coreutils timeout.c对没有timer_settime()的系统有一个回退 – 它将恢复为单秒分辨率:
/* timer_settime() provides potentially nanosecond resolution.
setitimer() is more portable (to Darwin for example),but only provides microsecond resolution and thus is
a little more awkward to use with timespecs,as well as being
deprecated by POSIX.  Instead we fallback to single second
resolution provided by alarm().  */

也许这就是你的问题.我不运行ubuntu所以我不能直接检查,但例如我的openbsd机器只有setitimer(),所以它只会使用全秒超时

– 编辑:在第二次看它仍然应该等待至少1秒,除非它的四舍五入…或者某种程度上tcpdump正在获得早期的sigterm……也许在这段时间内没有包裹?

相关文章

用的openwrt路由器,家里宽带申请了动态公网ip,为了方便把2...
#!/bin/bashcommand1&command2&wait从Shell脚本并行...
1.先查出MAMP下面集成的PHP版本cd/Applications/MAMP/bin/ph...
1、先输入locale-a,查看一下现在已安装的语言2、若不存在如...
BashPerlTclsyntaxdiff1.进制数表示Languagebinaryoctalhexa...
正常安装了k8s后,使用kubect工具后接的命令不能直接tab补全...