我正在启动一个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的进程。

07-28 02:11
查看更多