我正在使用tmux 复活用于在 tmux 关闭后重新创建 tmux 会话的插件。它大部分工作,但它不恢复正在运行的命令。我尝试过使用vim
、less
、man
和tail
,全部受支持,但除了等待的 bash 提示之外什么也没有得到。
以下是正在运行的一个窗格的保存数据,vim test.txt
如以下中的保存文件之一所示
~/.tmux/resurrect
:
pane 0 1 :bash 1 :* 2 :/tmp 0 vim :
显然这里缺少一些东西。 “test.txt”在哪里?如果参数不持久,则很难重新创建命令。
为什么不保存完整命令?
我正在 Cygwin 上运行它,我怀疑这是相关的。
答案1
新版本确实对此有所帮助:
https://github.com/tmux-plugins/tmux-resurrect/blob/master/docs/restoring_programs.md
我必须将以下内容添加到我的中.tmux.conf
以使其更好地工作:
# Plugins
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-resurrect'
set -g @plugin 'tmux-plugins/tmux-continuum'
# Plugin Config
set -g @resurrect-processes 'python sqlite3 nano'
set -g @resurrect-capture-pane-contents 'on'
set -g @continuum-boot 'on'
set -g @continuum-restore 'on'
获取插件+我 (大写一)
更新插件+U (大写U)
保存:+Ctrl+S
恢复:+Ctrl + R
可以在 .tmux/resurrect 编辑生成的带日期的保存文件
last
是指向最后一个文件的符号链接,如果 tmux 在启动时崩溃,则只是cp
最后一个指向的最新文件的工作/旧文件。
部分用户find 在 .tmux.conf 开头临时添加 new-session 会清除所有内容。
来源:https://jdhao.github.io/2019/01/17/tmux_plugin_management
答案2
问题的根源在于ps
Cygwin 提供的版本不完善,因为用他们的话说,
由于在 Windows 下模拟 POSIX 环境的限制,可以提供的信息很少。特别是此版本ps
不会显示命令参数。解决方案是安装一个更有用的替代品ps
并将其集成到 tmux-resurrect 中。
从安装开始pgrep
。这可以在 Cygwin 包中找到
psutils-ng
(对于 64 位 Cygwin。对于 32 位,它可能仍然被称为psutils
。)
现在我们需要告诉tmux-resurrect
使用它。幸运的是它已经有一个
战略可以使用这个工具。但是,它与 Cygwin 版本不太兼容,因此编辑文件
[tmux-resurrect-install-dir]/save_command_strategies/pgrep.sh
并更改
\pgrep -lf -P "$PANE_PID" |
到
\pgrep -af -P "$PANE_PID" |
这是一个字母的变化,l变为a。
.tmux.conf
最后,在任何其他复活配置之后添加此行到您的文件中,告诉插件使用此策略 :
set -g @resurrect-save-command-strategy 'pgrep'
应该可以做到这一点。下次保存会话时,上面给出的示例应该看起来更像这样:
pane 0 1 :bash 1 :* 2 :/tmp 0 vim :vim test.txt
恢复后该文件将被加载到vim
.