通过paramiko运行iperf3服务器后,我试图获取PID。
但是,它似乎无法返回任何内容。
尝试1:
运行以下命令:nohup iperf3 -s >> /tmp/listen.txt 2>&1 &
返回:
[1] 12345
但是当我通过python脚本和paramiko运行它时,却没有输出:
try:
test = paramiko.SSHClient()
test.set_missing_host_key_policy(paramiko.AutoAddPolicy())
test.connect('127.0.0.1', port = 22, username, password)
perf_comm = 'nohup iperf3 -s >> /tmp/listen.txt 2>&1 &'
test_stdin, test_stdout, test_stderr = test.exec_command(perf_comm)
t1 = test_stdout.readlines()
t2 = test_stderr.readlines()
print len(t1)
print len(t2)
if len(t1) > 0:
print "Complete1: " + t1[0] + " " + str(len(t1))
print "here1"
if len(t2) > 0:
print "Error2: " + str(t2[0])
sys.exit(1)
test.close()
except Exception as e:
print str(e)
test.close()
它不进入任何if语句,并且列表长度显示0。
但是它仍然可以成功运行服务器(我可以在ps
中看到它)
如何获取它以返回PID。
注意:
我尝试以这种方式运行它,并在另一个ps
命令中获取进程的PID,但似乎exec_command
在第一次调用后关闭了通道。