将命令分发到多个节点
cooperate的Python项目详细描述
cooperative是一个shell命令,通过将命令分发给多个节点,以协作方式执行命令。
它需要python>;=3.3和asyncio。
例如:
cooperate --local -- echo FOO
将在本地执行作业“echo foo”。
这个:
cooperate --ssh me@my.node -- echo FOO
基本等同于:
ssh me@my.node echo FOO
您可以声明任意多个节点。例如:
cooperate --local --ssh me@my.node --ssh me@my.second.node -- echo FOO
相当于:
echo FOO ssh me@my.node echo FOO ssh me@my.second.node echo FOO
您还可以同时声明许多作业。例如:
cooperate --local --command "echo FOO" --command "echo BAR"
相当于:
echo FOO echo BAR
安装
pip install cooperate
节点
命令可以通过此类节点分发:
- –本地本地执行
- –ssh通过ssh执行
- –docker在本地docker容器中执行
- –lxc在本地lxc容器中执行
这些选项可以根据需要重复。
模式
默认情况下,它会将每个命令生成到每个节点。
-m,–模式允许配置所需模式。
all模式执行所有节点中的所有命令:
cooperate --local --ssh me@my.node --ssh me@my.second.node \ --command="echo FOO" --command="echo BAR"
相当于:
echo FOO echo BAR ssh me@my.second.node echo FOO ssh me@my.second.node echo BAR
分发模式在所有节点之间共享命令:
cooperate --local --ssh me@my.node --ssh me@my.second.node \ --command="echo FOO" --command="echo BAR" --mode=distribute
相当于:
echo FOO ssh me@my.second.node echo BAR
并发性
默认情况下,它同时执行所有作业。
-b,–batch选项允许一次仅对指定数量的作业执行。支持百分比和有限数字:
cooperate --local --concurrence 1 \ --command="echo FOO" --command="echo BAR" --command="echo BAZ" cooperate --local --concurrence 33% \ --command="echo FOO" --command="echo BAR" --command="echo BAZ"
并发系统维护一个运行作业的窗口。当一个作业返回时,它将启动一个剩余的作业,依此类推。