gpt4 book ai didi

networking - 为什么 "netstat -a"不立即退出但 "netstat -n"呢?

转载 作者:行者123 更新时间:2023-12-05 07:12:01 29 4
gpt4 key购买 nike

我已经检查了“-n”的功能 --“显示事件的 TCP 连接,但是,地址和端口号以数字表示,不会尝试确定名称。”但是我不明白为什么“-n”可以让netstat立即退出?

最佳答案

通过快速检查,我没有看到与您所做的“-n”选项相同的描述,并且它不会使 netstat 连续运行。

由于您没有指定版本和您使用的确切命令,我尝试了 RH7.6 附带的版本(net-tools 2.10-alpha)和源代码中的最新版本(net-tools 3.14-alpha ).net-tools 的源代码可以在 github [1] 中找到。

由于找不到您描述的确切选项,我尝试了所有不需要参数的标志(没有组合)。据我所知,导致 netstat 不立即退出的唯一选项是“-g”和“-c”。 '-c' 有意义,因为它是连续运行 netstat 的标志。对于“-g”,它并不像连续行为来自逐行读取/proc/net/igmp 和/proc/net/igmp6 文件那样明显。第一个文件读取速度很快,但 igmp6 文件需要更长的时间(每 ~1 秒 1 行)。 '-g' 选项不是真正连续的,只是需要很长时间才能完成。

从代码来看,持续执行的唯一原因是(在代码中出现了4次):

if (i || !flag_cnt)
break;
wait_continous();

'i' 是一个函数的返回代码,'break' 命令是从无限循环中中断,所以基本上只有在设置了 flag_cnt 时代码才会连续运行(仅在提供 '-c' 时发生) 并且之前的命令没有错误。

对于上述特定问题,可能有以下几个原因:

  1. 该选项涉及从文件读取,需要很长时间才能完成,但它并不是真正连续的。
  2. 给定的选项和 flag_cnt 之间存在关联,这会导致设置 flag_cnt。
  3. 有一个不符合上述条件的 wait_continous() 调用。

正如我所说,我无法重现原始问题中的问题,也找不到具有上述描述的任何标志。此外,除了“-c”之外的任何标志都不会导致 netstat 连续运行。

如果您仍然想解决这个问题,我建议您查看您的代码,或者至少指定您使用的网络工具版本。内核版本也很重要,因为某些代码会由于缺少内核支持而被编译出。

[1] https://github.com/ecki/net-tools

关于networking - 为什么 "netstat -a"不立即退出但 "netstat -n"呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60565506/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com