获取Python + Bash子进程中的进程PID

2024-09-28 21:30:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要找到用另一个程序在bash脚本中启动的进程的pid。我使用sshpass输入密码,sshpass启动ssh客户机,然后该客户机打开sshtunnel到服务器。 以下是示例:

start_tunnel.sh
#!/bin/bash
exec sshpass -p 'passw' ssh -D :port user@$server -o StrictHostKeyChecking=no -f -N
exit

我从subrocess.Popen开始:

^{pr2}$

这个脚本启动得很好,它通常会结束并返回0,我可以得到它的PID,但是有没有可能得到启动的sshclient的PID?在


Tags: 程序服务器脚本bash密码示例客户机进程
3条回答

使用subprocess.Popen我只需调用shell=false选项。在

只需直接从Popen调用sshpass,并传入shell=False选项。那么直接子进程将是sshpass子进程。不需要外壳包装。在

默认情况下,proc.pid将返回shell(即父进程)的PID。您需要的是子进程(sshpass)的PID。在

所以在subprocess.Popen中设置shell=FalseDocumentation is here。在

相关问题 更多 >