让linux多台同时执行命令

worktile 其他 178

回复

共3条回复 我来回复
  • worktile的头像
    worktile
    Worktile官方账号
    评论

    要让Linux多台同时执行命令,可以使用以下几种方法:

    1. 使用SSH批量执行命令:通过SSH登录到多台Linux服务器,使用批量命令执行工具(如pssh、pdsh等)来同时执行命令。这些工具会自动将命令发送到所有的目标服务器上,并获取执行结果返回给你。

    2. 使用Ansible:Ansible是一种自动化工具,可以用于批量执行命令或配置管理。你可以在Ansible的主机清单文件中列出所有你想要执行命令的服务器,并使用Ansible的ad-hoc命令功能来同时执行命令。

    3. 使用分布式作业调度系统:像Slurm、Condor这样的分布式作业调度系统可以让你在多台Linux服务器上并行执行命令。你可以将你的命令定义为一个批处理作业,然后将作业提交给调度系统,调度系统会将作业分发到多个服务器上执行。

    4. 使用并行化工具:像GNU Parallel这样的并行化工具可以让你在多个Linux服务器上并行执行命令。你可以使用parallel命令将任务分成多个子任务,并指定要在哪些服务器上执行这些子任务。

    需要注意的是,以上方法都需要提前在多台Linux服务器上配置好SSH密钥认证,以便实现无密码登录。此外,在同时执行命令时,需要谨慎处理服务器资源的使用,避免对服务器产生过大的负载影响。

    2年前 0条评论
  • fiy的头像
    fiy
    Worktile&PingCode市场小伙伴
    评论

    在Linux中,可以通过以下几种方式实现多台主机同时执行命令:

    1. 使用ssh命令:ssh命令是Secure Shell的缩写,它可以用于在本地主机和远程主机之间建立加密的连接,同时允许在远程主机上执行命令。使用ssh命令可以在多台主机上同时执行相同的命令。例如:

    “`
    ssh user@host1 command &
    ssh user@host2 command &
    “`

    在上述命令中,通过在每个命令后面添加`&`符号,可以将命令放入后台执行,从而实现同时执行。

    2. 使用ClusterSSH工具:ClusterSSH是一个开源工具,它可以让你同时连接多台主机,并在它们上执行相同的命令。使用ClusterSSH可以方便地在多台主机上同时执行命令。例如:

    “`
    cssh user@host1 user@host2
    “`

    在ClusterSSH窗口中输入的命令将同时在所有连接的主机上执行。

    3. 使用分布式任务调度系统:如果你需要在一个大型的集群环境中执行命令,可以使用分布式任务调度系统,如Apache Hadoop或Slurm,来管理和调度任务。通过将任务提交到调度系统中,可以实现在多台主机上同时执行任务。

    4. 使用Ansible工具:Ansible是一个自动化工具,它可以用于管理和配置多台主机。通过编写一个Ansible playbook,可以定义需要在多台主机上执行的命令。然后使用Ansible命令执行playbook,即可同时在多台主机上执行命令。

    5. 使用分布式Shell工具:分布式Shell工具可以实现在多台主机上执行命令的目的。一些常用的工具包括dsh、pdsh和mssh等。这些工具可以让你同步或异步地在多台主机上执行命令。

    以上是几种在Linux中实现多台主机同时执行命令的方法。根据实际需求选择适合的方法,可以提高工作效率和效果。

    2年前 0条评论
  • 不及物动词的头像
    不及物动词
    这个人很懒,什么都没有留下~
    评论

    在 Linux 中,有多种方法可以让多台机器同时执行命令。下面将从多线程、SSH、Ansible 三个方面来介绍具体的操作流程。

    一、多线程方式
    多线程是一种在同一进程中同时执行多个线程的方式。在 Linux 中,可以使用 Python 的多线程库 threading 来实现多个主机同时执行命令。

    1. 在 Python 环境下,导入 threading 和 paramiko 库。

    “`python
    import threading
    import paramiko
    “`

    2. 创建一个自定义的 SSH 类,以实现连接到目标主机并执行命令的功能。

    “`python
    class SSH:
    def __init__(self, host, port, username, password):
    self.host = host
    self.port = port
    self.username = username
    self.password = password

    def run_command(self, command):
    ssh = paramiko.SSHClient()
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    ssh.connect(self.host, self.port, self.username, self.password)
    stdin, stdout, stderr = ssh.exec_command(command)
    result = stdout.read()
    ssh.close()
    return result
    “`

    3. 创建线程函数,用于连接主机并执行命令。

    “`python
    def execute_command(host, port, username, password, command):
    ssh = SSH(host, port, username, password)
    result = ssh.run_command(command)
    print(f”Host: {host} – Result: {result}”)
    “`

    4. 创建主函数,并在其中实例化线程,并启动执行。

    “`python
    def main():
    hosts = [
    {“host”: “192.168.1.101”, “port”: 22, “username”: “user1”, “password”: “password1”},
    {“host”: “192.168.1.102”, “port”: 22, “username”: “user2”, “password”: “password2”},
    # 添加更多主机信息…
    ]
    command = “ls -l /”

    for host_info in hosts:
    thread = threading.Thread(target=execute_command, args=(host_info[“host”], host_info[“port”], host_info[“username”], host_info[“password”], command))
    thread.start()
    “`

    5. 在主函数中调用 `main()` 函数。

    “`python
    if __name__ == “__main__”:
    main()
    “`

    然后运行该 Python 文件即可实现多台主机同时执行命令。

    二、SSH 方式
    SSH 是 Linux 下远程管理的标准方式,可以使用 SSH 协议连接到远程主机并执行命令。

    1. 在本机上生成 SSH 密钥对(如果已经有了密钥对可以跳过此步骤)。

    “`shell
    $ ssh-keygen
    “`

    2. 将生成的公钥文件 `id_rsa.pub` 上传到所有需要执行命令的远程主机上。

    “`shell
    $ ssh-copy-id -i ~/.ssh/id_rsa.pub user@remote_host
    “`

    3. 创建一个包含所有远程主机 IP 的文本文件,每行一个地址。

    “`shell
    $ vi hosts.txt
    “`

    在其中添加远程主机的 IP 地址:

    “`text
    192.168.1.101
    192.168.1.102
    # 添加更多主机IP…
    “`

    4. 创建一个包含要执行的命令的文本文件。

    “`shell
    $ vi commands.txt
    “`

    在其中添加要执行的命令:

    “`shell
    ls -l /
    “`

    5. 使用 `xargs` 命令将要执行的命令发送到远程主机。

    “`shell
    $ xargs -I % ssh user@% < commands.txt < hosts.txt```这样,所有远程主机就会同时执行指定的命令。三、Ansible 方式Ansible 是一种自动化运维工具,可以通过 SSH 连接到一组远程主机并执行命令。1. 安装 Ansible。```shell$ sudo apt-get update$ sudo apt-get install ansible```2. 创建一个包含所有要管理的远程主机的 Ansible 主机清单文件。```shell$ vi hosts.ini```在其中添加远程主机信息:```ini[hosts]192.168.1.101192.168.1.102# 添加更多主机IP...```3. 创建一个 Ansible playbook 文件。```shell$ vi playbook.yaml```在其中添加要执行的命令:```yaml---- hosts: all tasks: - name: Execute command command: ls -l /```4. 使用 `ansible-playbook` 命令执行 playbook 文件。```shell$ ansible-playbook -i hosts.ini playbook.yaml```这样,所有在主机清单中列出的远程主机都会同时执行指定的命令。以上是在 Linux 中实现让多台机器同时执行命令的方法和操作流程。无论是多线程、SSH 还是 Ansible 方式,都可以根据需求选择适合的方法来实现。

    2年前 0条评论
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部