我正在控制很多需要批量运行命令的设备,它按顺序运行得很好,但如果我尝试并行运行所有命令,我就会收到 plink 网络错误。
我很确定实际网络运行良好(这是一个专用于此的千兆网络,没有其他运行,有 200 个设备,唯一发送的是“sudo reboot”,因此几乎不会产生任何流量。
ssh 或 putty 是否有任何固有的限制我应该知道吗?我希望比按顺序执行速度更快,但我可以以合理大小的批次运行它,我宁愿在知道它来自哪里的情况下设置该批次大小,而不是通过测试随机设置。
目前我正在这样做:
对于(MYHOSTLIST.txt)中的/F%i,请启动plink -pw MYPASSWORD MYLOGIN @%i sudo reboot
在生成预期的 200 个 ish 命令 Windows 后,此操作失败并出现大量错误,删除启动后它工作正常,但需要永远按顺序重新启动设备。
答案1
可能存在此处描述的相同问题(包括解决方案):https://stackoverflow.com/questions/17472389/how-to-increase-the-maximum-number-of-child-processes-that-can-be-spawned-by-aw
但是,我不建议生成那么多进程,而是将并行性放在单个设备上,使用
for /F %i in (MYHOSTLIST.txt) do plink -pw MYPASSWORD MYLOGIN@%i "nohup sudo reboot &>/dev/null &"
它仍然会串行连接到所有设备,但仅启动重启命令,然后立即断开连接并转到下一个设备。
另一种选择是使用适当的操作系统来控制这些Linux设备 ;-)