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

sta*_*gue 1 linux ssh pid qnx sshd

所以我一直在试图弄清楚这一个,我有点卡住了.

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

我正在尝试查找命令,或编写一个我可以执行的脚本,它将告诉我处理会话的远程sshd进程的PID.如果只有一个SSH会话,我可以使用"ps -f | grep sshd"列出ssh​​d进程,并从解析该行中找到PID.

问题是,同时有多个SSH连接到这个主机,因此有多个sshd实例在运行.有没有人知道我可以通过从同一个会话运行命令来确定运行特定会话的进程?

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

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

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

谢谢!

小智 7

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

ps --no-headers -fp $$ | awk '{print $3}'
Run Code Online (Sandbox Code Playgroud)

  • @static_void_meringue,@Sami Kerola,我发现有一个更简单的解决方案:`ps --no-headers -eo ppid -fp $$` (2认同)