在我的绑定中,prefix + CTRL-Z 会触发 tmux 中的“suspend-client”命令。我曾多次错误地触发此命令,结果留下了一个没有提示的“僵尸终端”,我不知道如何“唤醒”它。
根据 tmux 手册页:
suspend-client [-t target-client]
(alias: suspendc)
Suspend a client by sending SIGTSTP (tty stop).
是否有“回去的路”或者我只需要关闭终端?
它是干什么用的?
答案1
查找 tmux 客户端 pidps
并使用kill -CONT <pid>
。
是的,应该实现 resume-client 以便与 tmux -C 一起使用。
答案2
SIGTSTP 是正典地暂停前台进程的信号,与 几乎相同ctrl+z
。明显的好处是,这会停止其对资源的使用以及可能产生的任何其他影响;它会冻结进程的状态并将控制权移交给父进程。不太明显的好处是 TTY 组件:您可以立即重新获得对 stdin/out/err 的控制权,并且当您恢复任务时,您可以bg
像运行 一样使用 保留对执行和 I/O 的控制,或者使用( )prog &
释放它。我知道 SIGCONT 将恢复该过程,但我不知道它是否或如何在 FG/BG 之间做出决定。fg
prog
现在,SIGTSTP 和 SIGSTOP 之间的区别在于 SIGSTOP 是不可协商的,而 SIGTSTP 可以被“捕获”(处理/捕获/等)这是一个简单的例子和以下是一些注意事项. 尝试一下man 7 signal
——您可能会发现另一种碰撞,如果没有办法利用它们来为您带来好处。
有一些“外部”命令可以执行相同的角色 - 您可以使用stty ixon
/来完成此操作ixoff
,但我不是专家,而且我没有对信号做过太多事情。也许在您开始测试时保留一份备忘单,因为似乎很容易锁定您的环境。
编辑 - 从您的帖子中看不完全清楚 - 禁用默认的 Tmux 绑定是否可以解决您的问题?