【问题标题】:Linux Bash script to ping multiple hosts simultaneously用于同时 ping 多个主机的 Linux Bash 脚本
【发布时间】:2013-04-02 03:11:48
【问题描述】:

我有一个包含 500 个服务器名称列表的文本文件。我需要同时 ping 所有这些,而不是一个一个循环,并将可 ping 的放在一个文件中,将不可 ping 的放在另一个文件中。

我可以在后台运行每个 ping 或为每个 ping 生成一个新进程吗?实现这一目标的最快和最有效的方法是什么?

【问题讨论】:

  • 有什么特别的原因需要一次性发送 500 个吗?我认为除非您有 500 个/(每个处理器的平均内核数)处理器,否则无法做到这一点……如果您只想加快速度,为什么不一次 ping 8 并进行迭代?
  • 您关心 ping 的输出或结果吗?您将 ping 每个主机多少?请记住,创建 500 个进程需要时间,也许您可​​以将其拆分为更少的进程,每个进程都执行顺序 ping?

标签: linux multithreading bash scripting background-process


【解决方案1】:

您可以使用xargs控制并行度:

cat file-of-ips | xargs -n 1 -I ^ -P 50 ping ^

在这里,我们一次最多保持 50 个 ping。 ip本身插入^;您可以在前后放置参数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-10-23
    • 1970-01-01
    • 2015-12-20
    • 2023-03-23
    • 1970-01-01
    • 2018-04-09
    • 2020-09-22
    • 2012-11-21
    相关资源
    最近更新 更多