Как вызвать скрипт bash из скрипта python с переменной python в качестве аргумента и установить pid - PullRequest
0 голосов
/ 06 февраля 2020

У меня есть следующий код:

port_temp = 8080
process_getpodsnamesipport = subprocess.call(['bash','getpodsnamesipport.sh', port_temp],preexec_fn=os.setsid)

Я хочу сделать что-то вроде:

os.killpg(os.getpgid(process_getpodsnamesipport.pid), signal.SIGKILL)

, чтобы завершить процесс, но это возможно только с subprocess.Popen.

os.killpg(os.getpgid(process_getpodsnamesipport.pid), signal.SIGKILL)
AttributeError: 'int' object has no attribute 'pid'

Ответы [ 2 ]

0 голосов
/ 06 февраля 2020

Это сработало для меня:

process_getpodsnamesipport = subprocess.Popen(['./getpodsnamesipport.sh', str(port_temp)],preexec_fn=os.setsid)
    //something something
    os.killpg(os.getpgid(process_getpodsnamesipport.pid), signal.SIGKILL)
0 голосов
/ 06 февраля 2020

Я бы использовал Popen и попробовал бы что-то вроде этого:

import subprocess
import os
import signal
import pipes

port_temp = 8080
cmd = ["./getpodsnamesipport.sh", str(port_temp)]

# to address Charles Duffy's suggestion for displaying the command
print(' '.join([pipes.quote(s) for s in cmd]))

process_getpodsnamesipport = subprocess.Popen(cmd,
                                              stdout=subprocess.PIPE,
                                              stderr=subprocess.PIPE,
                                              shell=False,
                                              preexec_fn=os.setsid)
std_out, std_err = process_getpodsnamesipport.communicate()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...