如何在没有 bash 或任何其他进程运行的情况下打开终端

如何在没有 bash 或任何其他进程运行的情况下打开终端

1)我想打开一个终端来输入/输出已经运行的不同进程。当我打开一个新终端时,bash 会自动执行,但我无法获取终端标准输入,因为它已被 bash 占用。我想运行一个终端窗口,没有链接到它的可执行文件。

2) 如果我通过 SSH 连接,如何为新连接获得相同的行为?即有一个没有运行 bash 的远程终端?

运行Ubuntu。

答案1

使用一个不执行任何操作的程序打开终端。实际上,您不需要在终端中运行任何程序,除了大多数终端仿真器在启动时运行连接到终端应用程序端的程序,并在该程序退出时关闭终端。

标准 Unix 工具套件中没有命令可以永远不执行任何操作,直到被信号杀死为止,但sleep 999999999已经足够接近了。

xterm -e sleep 999999999
ssh -tt host.example.com sleep 999999999

您可能想在某处报告终端设备。

tty=$(xterm -e sh -c 'tty >&3; exec sleep 999999999' 3>&1)

答案2

大多数进程如果不与终端关联,则其 stdin/stdout/stderr 会指向文件系统上的其他位置或 /dev/null。

不太确定你要追求什么。

可以使用调试器来附加到其他进程。您必须是 root 用户。

您可以运行这样的命令来查看它们指向的位置:

 find /proc -name 0 -o -name 1 -o -name 2 | xargs ls -ld

如果您只是希望能够重新附加到您拥有的程序并查看它们的输出,您可以首先从一个名为 的很酷的程序中启动它们screen,该程序启动一个会话,您可以在其中启动多个终端窗口并运行您的程序,然后如果您断开连接,请稍后重新连接。

相关内容