我的 IRC 客户端irssi
当前在 GNUscreen
会话中处于活动状态。
事后看来,我希望我使用tmux
而不是 GNU screen
。
如何将活动进程(或会话)从 GNU 迁移screen
到tmux
?
答案1
使用reptyr
。
这我的另一个答案提供了有用的详细信息。它是关于将外部进程迁移到screen
/ tmux
,但我刚刚在我的 Debian 9 上进行了测试并成功迁移htop
从 screen
到tmux
。
找到 的 PID 后htop
,我reptyr PID
从 内部的 shell调用tmux
。然后我返回screen
并完全终止它;这包括退出已启动 的 shell htop
。htop
连接到 提供的 tty 确实幸存了下来tmux
。我相信你的irssi
也会幸存下来。
exec reptyr PID
或tmux new-window 'reptyr PID'
也可以工作,尽管 tmux 服务器和 之间没有 shell reptyr
。如果reptyr PID
在交互式 shell 中调用简单 shell,shell 会继续运行,捕获的进程最终终止后,您将返回到它。
答案2
不幸的是,目前无法将活动会话从 迁移screen
到tmux
,因为尚未开发出相关功能。它们是完全不同的应用程序,不支持管理彼此的会话 - 未来可能会有所改变,但自 2016 年 4 月起,这已无法实现。
我建议的解决方法是将您现有的irssi
屏幕会话附加到一个tmux
窗口内。换句话说,screen -r
在其中一个tmux
窗口内执行。如果它们的键绑定发生冲突,您可能会遇到一些冲突(例如,如果您将tmux
热键重新映射到Ctrl-A屏幕默认设置),但您至少可以只使用一个应用程序,而不是两个。