我写了一些函数.bashrc以便tmux于使用:
#!/bin/bash
# .bashrc
# vim tmux
#----- --------------------
tabc() { tmux kill-window; }
tabe() { tmux new-window; }
tabf() { tmux find-window $@; }
tabn() { tmux next-window; }
tabo() { ; } # <-- How to `tabonly`?
tabp() { tmux previous-window; }
qa() { tmux kill-session; }
sp() { tmux split-window; }
vsp() { tmux split-window -h; }
on() { tmux kill-pane -a; }
typeset -fx tab{c,e,f,n,o,p} {,v}sp qa on
Run Code Online (Sandbox Code Playgroud)
我想执行tabonly命令,但不知道如何执行。
如果我从这样mutt的tmux会话开始:
$ tmux new-session -s mutt mutt
Run Code Online (Sandbox Code Playgroud)
穆特抱怨:
Error in /home/lars/.mutt/colors, line 20: 230: color not supported by term
Error in /home/lars/.mutt/colors, line 26: 244: color not supported by term
Run Code Online (Sandbox Code Playgroud)
但是如果我这样开始tmux,没有命令:
$ tmux new-session -s mutt
Run Code Online (Sandbox Code Playgroud)
然后在tmux会话开始mutt:
$ exec mutt
Run Code Online (Sandbox Code Playgroud)
它可以毫无问题地工作。在这两种情况下,会话TERM内部tmux都设置为screen-256color。我没有看到这两种情况之间有任何功能差异,所以我很困惑。就其价值而言,-2tmux 选项(“强制 tmux 假设终端支持 256 色”)似乎对此行为没有任何影响。
有没有人见过这种行为?你知道是什么原因造成的,以及如何解决吗?
我正在尝试在 Windows 7 64 位上的 Cygwin 64 位安装下安装 Tmux。我正在遵循以下说明:http : //java.ociweb.com/mark/programming/tmuxInCygwin.html
我成功编译并安装了 libevent 和 ncurses,但是当我尝试make使用修补过的 tmux 版本时出现此错误:
$ make
gcc -I /usr/include/ncurses -std=gnu99 -O0 -g -Wno-long-long -Wall -W -Wnested-externs -Wformat=2 -Wmissing-prototypes -Wstrict-prototypes -Wmissing-declarations -Wwrite-strings -Wshadow -Wpointer-arith -Wsign-compare -Wundef -Wbad-function-cast -Winline -Wcast-align -Wdeclaration-after-statement -Wno-pointer-sign -o tmux.exe arguments.o attributes.o cfg.o client.o clock.o cmd-attach-session.o cmd-bind-key.o cmd-break-pane.o cmd-capture-pane.o cmd-choose-buffer.o cmd-choose-client.o cmd-choose-list.o cmd-choose-tree.o cmd-clear-history.o cmd-clock-mode.o cmd-command-prompt.o cmd-confirm-before.o cmd-copy-mode.o cmd-delete-buffer.o cmd-detach-client.o cmd-display-message.o cmd-display-panes.o cmd-find-window.o cmd-has-session.o cmd-if-shell.o cmd-join-pane.o cmd-kill-pane.o cmd-kill-server.o cmd-kill-session.o cmd-kill-window.o cmd-link-window.o cmd-list-buffers.o …Run Code Online (Sandbox Code Playgroud) 我正在尝试watch "ps aux | grep myShittyProcess"在 tmux 会话中运行它
。这个过程myShittyProcess也是在 tmux 会话中启动的。在ps aux没有钟表命令工作。但是一旦我将它放入监视中,它就无法执行。如何让这个工作?
- 编辑 -
发现将 tmux 调整为全屏使其工作。与ps输出包装有关,grep无法在包装的上下文中找到。
似乎有很多相关的问题,但我想看看具体的解决方法。
所以,我曾经是一个狂热的 iTerm2 用户(无关紧要),我开始远程使用 tmux,因为我想避免 SSH 超时,即我主要关心的是,如果核灾难摧毁了我的笔记本电脑,我可以从哪里拿起远程服务器我离开了。
现在我也在本地使用它。有没有办法干净地混合这两种东西?我只看到两个选项。
所以主要的问题是我想要我的蛋糕并且也吃它。我想将我的工作保留在 ssh 连接上(并在它处于活动状态时在其中执行多任务),但我也想在所有 tmux 窗格之间共享我的工作,而不管它们是本地的还是远程的。是否可以?
我正在研究一个具有数百个节点的计算集群。当通过 ssh 进入集群时,负载平衡方案会选择一个空闲节点来登录。因此,在随后调用 ssh 时重新登录到以前的机器的可能性很小。
但是,我想tmux在遥控器上使用来设置在不同登录之间持续存在的会话。
我正在寻找可用于实现所需行为的不同选项。我想出了以下选项,但是,这并不是一个真正的“好”解决方案:
选择一个节点并坚持下去。
即在node-XXXX负载平衡器登录机器后打开一个新的 ssh 连接node-0042并在tmux那里运行。
使用ssh's ProxyCommandthis 甚至可以以无缝方式实现,即用户键入ssh node-0042打开集群登录的连接并使用该连接作为连接的代理node-0042。
这有一个明显的缺点,即用户无法从负载平衡机制中获得任何好处。
您对如何处理这种情况有什么建议吗?任何解决它的不同方法的想法(是否可以将正在运行的tmux服务器“移动”到另一台机器[这是当前机器的副本]?)。
我没有从许多终端窗口 ssh 连接到远程服务器,而是决定通过一个 ssh 连接开始使用 tmux。有些事情我似乎无法工作。
最重要的是,如何使终端鼠标可滚动?
bash setw -g mode-mouse on似乎什么都不做。我可以以某种方式配置我的终端以通过 ssh 发送滚动操作吗?
如果不可能,是否有一种解决方法可以将 page-up 和 page-down 绑定到上下滚动?
我正在使用tmux-2.5rcviassh -YX和其他应用程序允许鼠标滚动。
TMUX 默认启动 shell 作为登录 shell。我正在寻找一种方法来否定文件中的这种行为(以便它启动非登录 shell).tmux.conf。
目前我可以tmux set-option -g default-command "/bin/bash"在 tmux 之外使用。但这只能在 tmux 已经启动时才能完成,我似乎找不到将它集成到 conf 文件的方法。
我试图通过 htop 测量内存和 cpu 使用情况来比较这两种运行多个 shell/进程的方法。
有人可以解释一下每种方法的功能有何差异,或者是否存在差异?
编辑:
据我现在的理解,tmux/screen和其他多路复用器是虚拟会话,即原始会话中的多个虚拟会话。这与在终端中打开新选项卡实际创建新会话形成对比。
我仍然不确定一种方法是否比另一种方法具有性能优势;也没有涉及的潜在机制。
同时,请随时贡献有关该主题的更多详细知识!
下面的这些链接帮助我理解了基本区别:
我在 CentOS 主机上使用 tmux。每当我离开滚动模式(Ctrl+ B,[输入,q离开)时,我的键盘光标就会消失,我发现很难打字。这是一个已知的错误还是有办法在不重新启动会话的情况下恢复光标?