如何用Python判断我是否在Beowulf集群上运行?

2024-10-02 22:36:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个程序,我运行在许多不同的机器上,包括一个集群。目前,我通过查找计算机的主机名来检查我是否在集群上,如果它是集群的名称,我将分布式元素添加到程序中,即pestat和qsub调用。我想让这个程序更便于携带,却被困在这里了。在

有没有一种简单的方法来检查是否连接了从属节点,或者连接了多少个从属节点?我搜索了许多标准模块,包括os、sys、socket、platform,但没有找到任何可以使用的模块。我考虑过在运行pestat时使用try/except块,但我觉得应该有更好的方法。在

编辑:坦白地说,我愿意使用linux/bash解决方案,或者查找环境变量,如果我在集群上的话。在


Tags: 模块方法程序名称机器元素标准节点
1条回答
网友
1楼 · 发布于 2024-10-02 22:36:30

我要对这个解释稍作解释。如果我超过了要求,请告诉我。根据你的描述,听起来你在用TORQUE或PBSpro。鉴于目前不支持通过python检测集群,您可以:

1)检查二进制文件的路径。这意味着脚本不再依赖于主机。

#!/usr/bin/env python

import re
import subprocess

    command_to_run = "qstat -q"

    p = subprocess.Popen(command_to_run, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)
        output, error = p.communicate()
    match = re.search(r'command not found', error)
    if match:
        """something...
    match = re.search(r'Queue', output)
    if match:
        """something else...

这允许你做一些更复杂的逻辑。例如,检测群集是关闭还是关闭。如果路径中有命令,但它们返回连接错误,例如“连接被拒绝”,您可能不想提交。

2)在每个系统上,您可以编写自己的python模块,并尝试通过脚本导入它。如果失败了,你就知道你在正常的系统中。这可以通过puppet进行管理并相应地分发。

相关问题 更多 >