我正在尝试获取调试输出
- “find” 的作用
- 与网络上发生的情况相比(tshark)
因此我想并行运行这些命令并按时间对输出进行细致排序。
我这样做:
{
stdbuf -oL tshark -tad -l -n -s 9999 host x | ts '[TSRK %Y-%m-%d %H:%M:%.S]' &
sleep 5
stdbuf -oL find . -type d 2>&1 | ts '[FIND %Y-%m-%d %H:%M:%.S]' &
} >/root/out
主要问题:Tshark 输出滞后
# stdbuf -oL tshark -tad -l -n | ts '[TSRK %Y-%m-%d %H:%M:%.S]'
[TSRK 2021-08-18 17:40:56.206744] 2 2021-08-18 17:40:55.477802058 00:04:96:xx:xx:xx → ff:ff:ff:ff:ff:ff ARP 64 Who has 172.31.x.x? Tell 172.31.x.x
将 ts ( ) 的时间戳[TSRK 2021-08-18 17:40:56.206744]
与 tshark ( 2021-08-18 17:40:55.477802058
)的时间戳进行比较
输出滞后。组合日志在显示 tshark 的输出之前输出 find 的结果。而显然,网络活动必须先于 的结果find
。
我也尝试过parallel
parallel --line-buffer ::: \
'stdbuf -oL tshark -tad -l -n -s 9999 host x | ts "[TSRK %Y-%m-%d %H:%M:%.S]" ' \
'stdbuf -oL find . -type d | ts "[FIND %Y-%m-%d %H:%M:%.S]" ' \
>/root/outpar
但外部工具似乎无法修复内部工具明显的错误......结果是一样的。
我该如何正确地做到这一点?