GNU Screen和Tmux:提示和技巧


8

因此,我是GNU ScreenTmux等多路复用器的忠实拥护者,但是即使使用Screen多年了,我仍然认识到我不知道有很多东西(而且我只使用Tmux几个月,所以更糟) )。

您在这些软件上使用了哪些配置以及技巧和窍门(无论是哪个还是每个,都没有关系)?

我用它作为我的屏幕配置(我想我是从Ubuntu的default改编过来的screenrc):

shell -$SHELL
startup_message off
defscrollback 1000
hardstatus alwayslastline '%{= wk}%?%-Lw%?%{r}(%{k}%n*%f%t%?(%u)%?%{r})%{k}%?%+Lw%?%?%= %m/%d %C%A'
activity ''
termcapinfo xterm* 'hs:ts=\\E]2;:fs=\\007:ds=\\E]2;screen\\007'

这是一个简单的配置,可以使状态栏显示某些颜色,但是我敢肯定,我可以使用屏幕和Tmux做更多的事情,并且很想知道。


zombie qr即使进程已死,也保持窗口打开状态,并允许q将其关闭或r恢复进程。对于软件验证很有用。
Ency

Answers:


4

这对于这个人群来说可能有点简单,但是我发现将其添加到.profile的末尾很有用,这样当我通过ssh远程登录时,我可以阅读MOTD,然后切换到屏幕。

if [ -n "$SSH_TTY" ]
then
        read -p "Press <ENTER> to continue." enterkey
        exec /usr/bin/screen -D -R
fi

3

我的.bashrc中有这个。如果您不运行屏幕,则此函数ssh在执行时将照常调用。如果您在屏幕内部运行(并且尚未更改默认值$TERM),它将首先将窗口名称设置为远程主机(以及任何可选参数)。当您有很多打开时,跟踪远程连接非常方便,我认为这在我们的工作中很常见。

function ssh () {
if [ $TERM = "screen-bce" ]
    then
    screen -X title "$*" 
    /usr/bin/ssh $*
else
    /usr/bin/ssh $*
fi
}

我还使用它bind ^A windowlist -b来轻松访问窗口列表(只需按两次ctrl-A)。

所有窗口的简单ssh-agent支持:

setenv SSH_AUTH_SOCK $HOME/.screen-ssh-agent
screen 10 ssh-agent -a $SSH_AUTH_SOCK $SHELL

然后,在任何窗口中,当您开始新会话时,只需执行一次ssh-add。

最后,当从另一个屏幕会话中附加到远程屏幕会话时,您可以用于screen -x -e ^Vv将控制顺序设置为CTRL-V(例如)。这避免了必须链接CTRL-A来控制远程会话。


0

你可能会考虑屏风,基本上是几百个提示,技巧,配置,键绑定,状态脚本的集合,和最佳实践面向各地screentmux


0

即使我开始将tmux用于窗格,我仍然使用屏幕来复用其中的窗口。tmux应该具有此功能,但是对我而言,将窗格从一个窗口交换到另一个窗口并不直观,两个附加的tmux查看器也不能在同一守护程序中查看不同的窗口(screen -x行为),因此是tmux的屏幕解决方案。这是两个tmux.conf绑定,它们使我花费了最长的时间,并且每天都在使用。

第一个绑定M(ctrl-b shift-M)在鼠标窗格选择器和鼠标高亮/复制之间切换tmux。您仍然可以在窗格选择模式下进行复制/粘贴,但是您必须按住shift键(如果习惯了这种习惯,在任何其他应用程序中进行复制/粘贴会使您有些痛苦,让我告诉您)。该宏还可以使您直观地看到当前选择了哪种模式。

bind M set mouse-select-pane \; if '[ "`tmux show -v mouse-select-pane`"= "on" ]' "set status-bg cyan \; set pane-active-border-bg cyan" "set status-bg green \; set pane-active-border-bg default"

第二个,绑定CL(ctrl-b ctrl-l),将采用4个窗格的任何布局,并将其转变为我的首选布局。通常,我会发现我在我认为是在屏幕内的窗格中击中了ctrl-d来关闭它,但是却没有屏幕会话,因此它关闭了该窗格。由于我的布局是v-split,h-split,v-split和某些调整大小的,因此,如果我不小心关闭了除最后一个窗口以外的任何窗口,关闭我需要重新创建的窗口之间的任何中间窗格将变得很痛苦(无双关语)。最后,然后重新创建窗格并调整其大小,最后重新附加我在杀死窗格时可能不得不分离的所有屏幕会话。有了这个宏,我可以创建一个新窗格ctrl-b {(交换窗格-U的默认绑定),直到它以正确的顺序返回,然后单击该宏,一切恢复正常。我首选的布局可能与您的布局不同,list-windows 命令以获取如下所示的布局字符串。

bind C-L select-layout a18e,155x94,0,0[155x18,0,0,6,155x75,0,19{81x75,0,19,31,73x75,82,19[73x22,82,19,32,73x52,82,42,33]}]

如果那太天真了,无法满足您的口味,那么总会有tmuxinator用于面板管理。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.