为什么 `iftop -s` 不能动态生成输出?

为什么 `iftop -s` 不能动态生成输出?

我尝试让它iftop执行80000秒并输出到文件:

sudo iftop -i wlan0 -s 80000 -t > "$file"

然而我在文件中找到的只是

Listening on wlan0

没有实际输出。当我删除 时-s 80000,它就可以正常工作。

为什么文件中没有实际输出?

答案1

iftop -h-s num打印一个单身的文本输出 num秒,然后退出。

如果在仍在收集数据时检查文件iftop,结果尚未出现。使用-s 80000该工具应在 22 小时后退出。阅读文件然后


要捕获多个输出块:

  • 在一个循环中运行iftop -t -s …几次。请注意,这会产生开销:-s 1可能需要 2 秒左右;因此在这种情况下,循环次数不会简单地转化为总时间。并且总统计数据(“累积”等)在每个循环中都是独立的,因此这不是最佳方法。您可能希望>>每次都附加 () 或重定向整个循环的输出。

  • 使用timeout。例如:

     sudo timeout -s INT --foreground 20 iftop -i wlan0 -t
    

    timeout --foreground … sudo …看起来更安全,但它很可能不会起作用,因为的子代sudo不会超时。

  • iftop -t … > …在后台运行,sleep只要您愿意,最后杀死iftop

    不起作用,因为iftop无论如何都想使用终端。一个麻烦的解决方法是iftop在前台运行,然后sleepkill另一个终端中运行。

相关内容