通过 PID 通过 ssh 操作进程

通过 PID 通过 ssh 操作进程

假设服务器上有一个进程 (PID 1501) 在运行。该服务器打开了 Firefox (作为 1501)。我想从远程计算机向 PID 1501 发送命令 (例如 1501 -new-tab )。我该如何通过 ssh 运行该命令?

TLDR:如何将命令行参数发送给特定的 pid?

答案1

一般来说,您不能将命令行参数发送给特定的 pid。

Firefox 有自己的远程/命令系统,允许您向正在运行的实例发送诸如 -new-tab 命令之类的内容。我已经有一段时间没有看过它了,但我相信它只取决于将 DISPLAY 变量设置为与 Firefox 正在运行的变量相匹配。

例如,在服务器上,您可能将 DISPLAY 设置为 :0.0(第一个本地 X 显示器)。您可以通过运行来检查

回显$DISPLAY

从 X 内部的终端在服务器本身上如果正确,那么您应该能够以运行 X 和 Firefox 的同一用户身份通过​​ ssh 进入服务器,将 DISPLAY 设置为 :0.0,然后运行 ​​firefox -new-tabhttp://blah/

ssh user@server
export DISPLAY=:0.0
firefox -new-tab http://blah

但是,当我这样做时,它通常会以另一种方式工作 - 我在本地计算机上运行 Firefox,我通过 ssh 连接到远程系统,然后出于某种原因运行 Firefox -new-tab,它会在本地计算机上运行的 Firefox 上打开一个新选项卡。没有理由它不应该反向工作,但它有点复杂。

更新 我刚刚通过 ssh 连接到另一台机器,然后返回到我的本地机器进行了测试,它确实按建议的方式工作。使用已经运行 Firefox 的相同用户名 ssh 登录,正确设置 DISPLAY 变量,然后 Firefox 远程命令就会起作用。

相关内容