我正在启动一个ssh命令,该命令会自行退出,即使脚本完成后也将运行。因此,代码如下所示:
ssh_proc = Popen(['ssh', '-f', '-N', '-L', local_forward, local_user_host], stdin=PIPE, stdout=PIPE)
print ssh_proc.pid
stat = ssh_proc.poll()
如您所见,
ssh -f
将ssh派生为一个进程,并在脚本完成后运行-我需要获取该ssh进程的pid。上面的打印语句只会打印出Popen进程的pid。有什么建议吗? 最佳答案
尽管您已将-f
开关传递给ssh,但是您的程序无法控制(也不会被告知)ssh程序本身执行的活动。您的程序没有直接的方法来发现ssh已分叉并找到第二个子pid。
但是,可能有间接方法来获取此信息。您可以枚举活动进程并寻找其父级为ssh_proc.pid
的进程。