slurm群集中的计算节点之间pxssh不起作用

时间:2018-12-18 13:34:34

标签: python slurm pxssh

我正在使用以下脚本来连接Slurm群集中的两个计算节点。

from getpass import getuser
from socket import gethostname
from pexpect import pxssh
import sys 

python = sys.executable
worker_command = "%s -m worker" % python + " %i " + server_socket
pid = 0
children = []
for node, ntasks in node_list.items():
        if node == gethostname():
                continue
        if node != gethostname():
                pid_range = range(pid, pid + ntasks)
                pid += ntasks
                ssh = pxssh.pxssh()
                ssh.login(node, getuser())
                for worker in pid_range:
                        ssh.sendline(worker_command % worker + '&')
                children.append(ssh)

node_list是字典{'cn000': 28, 'cn001': 28}worker是放置在工作词典中的python文件。

我希望ssh.sendlinepexpect.spawn相同。但是,运行脚本后没有任何反应。

尽管ssh.login(node, getuser())建立了一个ssh会话,但看来ssh.sendline(worker_command % worker)行没有任何作用,因为要运行的worker_command脚本没有运行。

我该如何解决?还是我应该尝试其他东西?

如何在一个计算节点上创建一个套接字并将其与另一计算节点上的套接字连接?

1 个答案:

答案 0 :(得分:0)

worker_command的内容中缺少'%s'。它包含如下内容:“ / usr / bin / python3 -m worker”-> worker_command%worker应该导致错误。

如果不是(可能,因为此源看起来像原始程序的一小部分),则在“&”之前添加“ >> workerprocess.log 2>&1”字符串,然后尝试运行程序并执行看看服务器上的workerprocess.log!如果$ HOME在服务器上可写,则应该在其中找到错误消息。