Tho*_*mas 6 linux ssh command-line-interface
我正在寻找一种工具来运行一系列命令,例如现有工具:
parallel -h
parallel [OPTIONS] command -- arguments
for each argument, run command with argument, in parallel
parallel [OPTIONS] -- commands
run specified commands in parallel
Run Code Online (Sandbox Code Playgroud)
但我希望这些命令在多台计算机上通过 ssh 运行,具有与许多主机通信pssh或pdsh与许多主机通信的一些优点。我已经破解了一些有用的东西,但是与这些工具相比,它的 ssh 处理算不了什么——我无法阻止它们,甚至无法看到它们的所有输出。
如果该工具具有一些基本的负载平衡,那就更好了,但我想我会使用单独的工具进行主机选择。(用于查询负载、内存以及计算机是否处于交互式使用状态的好工具也将不胜感激,但我已经写了一些足以用于主机选择的东西。)这不是在集群上,我不不想依赖 sshd 以外的守护进程,或者要求管理员安装像 Condor 这样的严肃的集群作业调度程序。我在任何这些计算机上都没有 root 访问权限。
编辑:强调一下,我想在每个主机上运行不同的命令- 通常运行具有不同参数的相同程序,如parallel上面的第一个使用示例。
啊! 看起来并行的 GNU 版本(不是我安装的版本)确实可以做到这一点。没有负载平衡,我还没有尝试看看它对每个 stdout 和 stderr 做了什么,但这正是我想要的。
To run commands on more than one remote computer run:
seq 10 | parallel --sshlogin server.example.com,server2.example.net echo
Run Code Online (Sandbox Code Playgroud)
不幸的是,我已经编写了一个提供状态更新的脚本,具有可配置的输出设置,并包含一些简单的负载平衡,所以我现在将坚持使用它。