【问题标题】:Get the PID of a remote SSH Session [QNX]?获取远程 SSH 会话 [QNX] 的 PID?
【发布时间】:2014-09-26 08:46:45
【问题描述】:

所以我一直在摸索着想弄清楚这一点,但我有点卡住了。

我正在使用 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

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

谢谢!

【问题讨论】:

    标签: linux ssh pid qnx sshd


    【解决方案1】:

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

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

    【讨论】:

    • 成功了!我不知道“$$”可以用来检索这样的PID。谢谢!
    • @static_void_meringue,@Sami Kerola,我发现有一个更简单的解决方案:ps --no-headers -eo ppid -fp $$
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-07
    • 1970-01-01
    • 2017-05-19
    • 2021-08-22
    • 1970-01-01
    相关资源
    最近更新 更多