首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从python脚本后台执行Linux命令

从python脚本后台执行Linux命令
EN

Stack Overflow用户
提问于 2022-06-17 16:18:10
回答 1查看 79关注 0票数 0

我有一台ubuntu机器,kubernetes集群正在运行。我基本上是想从python3脚本的后台运行一个Kubernetes命令,但是它不起作用,请帮助.

下面是一个更大脚本的代码的一部分,我使用格式化的字符串创建cmd4,然后将cmd4传递给os.system as os.system(cmd4)。但是,当我执行脚本时,它就开始在cmdline中显示日志。我使用nohup进行了尝试,并在下面提到过,但它开始在nohup.out中填充日志。

代码语言:javascript
运行
复制
for podname in pod_names:
    if "smf" in podname or "pcf" in podname or "udm" in podname:
        containername = 'worker'
    else:
        containername = 'cppe'

    **cmd4 = f"kubectl logs -f -n core {podname} --container={containername} > {podname}_{containername}_log </dev/null &>/dev/null &&"**
    cmd5 = f"echo $! >> pid.txt"
    os.system(cmd4)
    os.system(cmd5)
    pid_file = open('pid.txt', 'a+')
    pid_file.write("\n")
    pid_file.close

=================================

以以下方式尝试:

cmd4 = f"nohup日志-f -n core {podname} --容器={容器名称}>{podname}_{容器名称}_log /dev/null &“

但是它给出了这个

updatedReplicas: 1

appending /core-pcf配置的nohup:忽略输入并将输出附加到“nohup.out”

EN

回答 1

Stack Overflow用户

发布于 2022-06-17 16:28:55

您试过使用子进程库吗?

我认为您的脚本的解决方案如下。

代码语言:javascript
运行
复制
import subprocess

for podname in pod_names:
    if "smf" in podname or "pcf" in podname or "udm" in podname:
        containername = 'worker'
    else:
        containername = 'cppe'

    **cmd4 = f"kubectl logs -f -n core {podname} --container={containername} > {podname}_{containername}_log </dev/null &>/dev/null &&"**
    cmd5 = f"echo $! >> pid.txt"
    cmd4_bash = subprocess.Popen(cmd4.split(), stdout=subprocess.PIPE)
    cmd5_bash = subprocess.Popen(cmd5.split(), stdout=subprocess.PIPE) 
    pid_file = open('pid.txt', 'a+')
    pid_file.write("\n")
    pid_file.close
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72662194

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档