我有一台ubuntu机器,kubernetes集群正在运行。我基本上是想从python3脚本的后台运行一个Kubernetes命令,但是它不起作用,请帮助.
下面是一个更大脚本的代码的一部分,我使用格式化的字符串创建cmd4,然后将cmd4传递给os.system as os.system(cmd4)。但是,当我执行脚本时,它就开始在cmdline中显示日志。我使用nohup进行了尝试,并在下面提到过,但它开始在nohup.out中填充日志。
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”
发布于 2022-06-17 16:28:55
您试过使用子进程库吗?
我认为您的脚本的解决方案如下。
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.closehttps://stackoverflow.com/questions/72662194
复制相似问题