[英]Parsing inline python command via linux using pdsh
因此,我试图从python脚本发出此命令,该脚本收集群集中预定数量节点上的cpu信息。 在这里,我使用2的扇出,并且仅在节点b127到b129上运行它以进行测试。
pdsh -f2 -w b[127-129] 'python -c "import multiprocessing
num_cpu = multiprocessing.cpu_count()
stat_fd = open('/proc/stat')
stat_fd.close()"'
我打印了命令,这就是终端上显示的内容。 因此,告诉我引号和命令的格式正确。 我通过执行以下代码来获取此字符串:
python_command = "'python -c "\
+ "\"import multiprocessing\n"\
+ "num_cpu = multiprocessing.cpu_count()\n"\
+ "stat_fd = open(\'/proc/stat\')\n"\
+ "stat_fd.close()\"'"
command = "pdsh -f2 -w b[127-129] " + python_command
print command
不幸的是,带有open(\\'/ proc / stat \\')的行似乎是问题所在,因为这是导致解析器由于嵌套的单引号而失败的唯一行。 我尝试了多种引号和转义组合,以使其无效。 为了省去发布的代码,我在文件的打开和关闭之间省略了一些代码。
我四处搜索并找到了此链接 ,但是发现它太简单了,因为我可以复制这些命令。 是的,我知道我可以使用bash命令来完成我想做的事情,但我最终可能会这样做,但这使我无法自拔。 我也有使用top和ps收集数据的脚本,因此不需要使用它们的解释。 我非常感谢提前提供的帮助。
尝试这个:
python_command = """pdsh -f2 -w b[127-129] 'python -c "import multiprocessing
num_cpu = multiprocessing.cpu_count()
stat_fd = open(\\"/proc/stat\\")
stat_fd.close()"'"""
在Python中,您可以对包含换行符和单/双引号的字符串使用三引号( """..."""
或'''...'''
)。
最后一级的引号(在open()
行上)将需要转义,以免与外部引号冲突。 您还需要转义反斜杠,以便Python在解释字符串\\\\"
时不会立即使用它们。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.