挂起客户端后恢复 tmux 客户端

Ale*_*han 6 tmux

在我的绑定中,前缀 + CTRL-Z 触发 tmux 中的“暂停客户端”命令。我错误地触发了很多次,并且在没有提示的情况下留下了“僵尸终端”,我不知道如何“唤醒”它。

根据 tmux 手册页:

suspend-client [-t target-client]
 (alias: suspendc)
 Suspend a client by sending SIGTSTP (tty stop).
Run Code Online (Sandbox Code Playgroud)

有没有“回去的路”,或者我只需要杀死终端?

它是干什么用的?

Joh*_*n P 0

SIGTSTP 是典型的挂起前台进程的信号,并且(几乎)与 相同ctrl+z。明显的好处是,这会停止其对资源的使用以及可能产生的任何其他影响;它冻结进程的状态并将控制权交给父进程。不太明显的好处是 TTY 组件:您可以立即重新获得对 stdin/out/err 的控制,并且当您恢复任务时,您可以使用 保留对执行和 I/O 的控制bg,就像您正在运行它一样prog &,或者释放它与fg( prog.) 我知道 SIGCONT 将恢复该过程,但我不知道它是否或如何在 FG/BG 之间做出决定。

现在,SIGTSTP 和 SIGSTOP 之间的区别在于 SIGSTOP 是不可协商的,而 SIGTSTP 可以被“捕获”(处理/捕获/等)。这是一个简单的示例这里有一些注意事项。尝试一下man 7 signal——你可能会发现另一次冲突,即使不是利用它们为你带来好处的方法。

有一些执行相同角色的“外部”命令 - 您也许可以使用stty ixon/来完成此ixoff操作,但我不是专家,而且我还没有对信号做太多事情。也许在开始测试时保留一份备忘单,因为看起来锁定您的环境很容易。

编辑 - 从您的帖子中还没有完全清楚 - 禁用默认的 Tmux 绑定会解决您的问题吗?