获取远程SSH会话的PID [QNX]?

3

我一直在琢磨这个问题,但现在有点卡住了。

我正在使用Python的subprocess模块和Popen打开PuTTY会话(使用plink.exe),并连接到远程主机。这意味着我可以访问会话输出。

我试图找到一个命令或编写一个脚本来告诉我处理会话的远程sshd进程的PID。如果只有一个SSH会话,我可以使用“ps -f | grep sshd”列出sshd进程,并从解析该行中找到PID。

问题是,此主机同时有多个SSH连接,因此有多个sshd实例正在运行。是否有人知道一种方法,可以通过从同一会话运行命令来确定运行特定会话的进程?

注意: 以下脚本适用于OS X和许多形式的Linux。

#!/bin/sh
TTY=$(tty)
TTYID=${TTY##*/}
ps -f | grep $TTYID

这将返回具有正确PID的行,然后可以使用Python进行解析。 不幸的是,我正在使用QNX,它没有在“ps”中实现TTY字段,因此该字段中的所有内容都显示为“?”。还有其他想法吗?

谢谢!

1个回答

8

完整格式打印您正在运行的shell的pid,并打印第三个字段,即PPID(父进程pid)。

ps --no-headers -fp $$ | awk '{print $3}'

成功了!我不知道“$$”可以这样用来获取PID。谢谢! - static_void_meringue
2
@static_void_meringue,@Sami Kerola,我发现有一个更简单的解决方案:ps --no-headers -eo ppid -fp $$ - TooroSan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接