【问题标题】:How to run several python scripts simultaneously without waiting for them to finish, remotely on other machines如何在其他机器上远程同时运行多个 python 脚本而不等待它们完成
【发布时间】:2022-08-26 19:22:33
【问题描述】:

我有一个嵌入式系统(Linux/Debian),我在不同的控制台上运行了几个 python 脚本。这些脚本是 Web 服务器,因此它们相互通信并且不应该完成。因此在不同的控制台中运行它。

我直接连接到这台机器 (ssh) 并在不同的控制台中运行脚本。但是现在我想在不同的机器上同时运行这些脚本(相同的)。我想我可以在每个系统上都有一个.sh,并通过 ssh 调用它,但甚至是一个.py file can work

类似init_all_processes.sh:

#!/bin/bash
sudo python3 /home/proj1/webServer.py
sudo python3 /home/proj2/server/main.py
sudo python3 /home/proj1/test/test_server.py
sudo python3 /home/proj2/process_receiving_images.py

但是通过这样做并在所有远程机器上运行init_all_processes.sh

ssh root@MachineB 'bash -s' < init_all_processes.sh

@ 987654322@,脚本是否在本地无关紧要,因为所有相关代码/存储库也在这些机器中)来自我的主机/本地服务器,如果它是一个网络服务器(不仅仅是'运行并完成在某个点',但因为它会一直运行直到被杀死)它不会运行其他脚本。我见过screen can work

是否有直接的方法来运行不同的脚本,就好像它们在不同的控制台/进程中运行一样?我首先考虑的是通过 ssh 使用 ips 的主(主机)/从(远程/服务器)结构。通过这样做,我什至可以将参数发送到每个脚本(例如,num_epochs,现在不重要)以获得不同的结果。但是问题仍然存在于每个脚本未完成(因为它们不打算完成),因此无法运行以下脚本。如果这是一个问题,我不需要日志。

【问题讨论】:

    标签: python ssh embedded-linux


    【解决方案1】:

    解决方案有点不同。我想按特定顺序运行脚本,但由于某种原因,.sh 没有按顺序运行,它是随机的,首先运行/home/proj1/test/test_server.py。我添加了&amp; 以便能够仅从一个shell 脚本运行所有这些命令,而无需等待它们完成运行(这是主要问题之一,也是我想要的WebServer!)。

    我的解决方案,最终的init_all_processes.sh

    #!/bin/bash
    sudo python3 /home/proj1/webServer.py &
    sudo python3 /home/proj2/server/main.py &
    sleep 5
    sudo python3 /home/proj1/test/test_server.py &
    sudo python3 /home/proj2/process_receiving_images.py &
    

    sleep 工作正常,因为其他 2 个先前的脚本可以等待第三个开始向它们发送信息。

    然后,调用该脚本:

    ssh user@XXX.XXX.X.XX 'bash -s < /home/init_all_processes.sh'
    

    作为user,用户和XXX.XXX.X.XX是远程机器/嵌入式系统的特定ip,通过ssh连接。

    【讨论】:

      猜你喜欢
      • 2016-09-08
      • 1970-01-01
      • 2010-10-07
      • 2016-03-07
      • 2015-08-21
      • 1970-01-01
      • 2020-05-20
      • 1970-01-01
      • 2015-03-19
      相关资源
      最近更新 更多