我正在尝试确定我正在运行的命令是否在 SSH 会话中。通常,通过检查$SSH_CONNECTION
或遍历进程树并寻找sshd
.
但是,如果我screen
在本地启动一个会话,然后通过 SSH 重新连接它,那么这些都不起作用。
在重新附加的屏幕会话中是否有某种方法可以确定会话当前附加到哪个外壳?
进程树看起来像shell(X) --> screen(Y) --> systemd(1)
,这是有道理的,因为当我退出本地终端时,屏幕会话可能会被重新设置。
screen -ls
没有说什么(Attached)
,只有 PID Y
,没有关于它当前连接位置的有用 PID。
它所附加的进程树shell(A)
包含一个子进程screen(B)
,但我找不到链接 PIDY
和B
. 我什至试图找到屏幕正在使用的 unix 套接字的另一端,但它是空的。(甚至检查为root
)。
这只是不可能的事情吗?