Mau*_*ren 10 linux bash process
有没有办法将使用 & 从终端启动的进程重新附加到特定终端?例如,我通过以下方式开始了 Kate:
kate &
Run Code Online (Sandbox Code Playgroud)
现在我想将进程重新附加到给定的终端。
这里有两个问题:
1) 被 HUP 杀死并避免:
如果您在 shell 中启动程序然后结束该 shell,则所有子进程都将被终止。这包括运行到后台的程序。(在命令末尾以 & 开头的那些,如kate &您的示例中的 ,但也包括您暂停的进程,controlz然后bg)。
一旦关闭外壳,两者都会死亡。*1
您可以通过运行disown后台程序来解决此问题。然后它会继续运行,但你不能再让它回到 shell 的前台。
您可以使用 nohup(例如nohup kate &)将程序的输出保存在文件中。但是完全重新连接到外壳也不再可能。
2)终端模拟器。
您还可以启动一个程序来模拟自己的终端,该程序是专门构建的,因此您可以重新连接到它。screen并且tmux是这方面的两个例子。
屏幕使用示例:
screen (启动屏幕。默认情况下,这会启动一个新的外壳)。kate (凯特开始)。logout 走到另一台电脑前,或者几个小时后再回来。(或两者都:)) - 登录或 ssh 到主机。- screen -r (重新附加屏幕。您现在回到正在运行 kate 的 shell。
有用的屏幕命令:
screen -d
从屏幕程序外部分离屏幕。
使用 ControlAD从屏幕内部分离。
screen -r 重新连接到屏幕(例如从不同的位置)
screen -dr
如果有附加的屏幕,则首先将其分离。然后将其附加到本地。
有用,你忘了在办公室把它拆下来,然后从家里登录;)
screen -x
附加到正在运行的屏幕而不关闭其他会话。用于共享调试、帮助会话等。
*1:编辑:当我回答这个问题时,我假设所有的 shell 都会向它的所有子进程发送一个 sigHUP。然而,这是一个选项,根据外壳,它可能是可配置的。在某些情况下,它甚至不再是默认设置。
示例 1:在 bash 中,您可以通过内置命令shopt配置此选项。( shopt -s huponexit).
示例 2:使用 zsh 你想要.setoptHUP
| 归档时间: |
|
| 查看次数: |
24350 次 |
| 最近记录: |