我正在考虑从 screen 切换到 tmux,但我已经投入了大量时间开发了一个广泛的 .screenrc,而且我不想在将它移植到 tmux 几个小时后发现 tmux 不能做一些重要的事情对我来说。
我查看了两者的几个在线比较,但没有一个深入或回答许多(对我来说是什么)重要问题,可以归结为两个问题:
(客户端-服务器架构很好,但在我看来并没有提供任何新功能。许可证显然更好。更小更精简显然很好,但对我来说不是游戏规则改变者。)
由于这2个问题非常广泛,让我举一些具体的例子:
我可以自己寻找这些特定问题的答案,但它们只是 2 个更大问题的示例,而且我还想听到那些不一定适合我的任何示例的更大问题的答案。如果 tmux 中缺少某些东西,我完全有可能在花费大量时间切换后不会发现它,这就是我想要避免的。谢谢!
运行 'screen ls' 时,屏幕停止显示文本[screen is terminating]。我希望 screen 使会话保持活动状态并重新连接到它以查看ls.
当然,真正的事情是我没有运行screen ls,而是 a screen fsck ...,所以我想确保当这个命令完成时屏幕不会终止。
我很想有一个对已经存在的正在运行的屏幕会话有用的答案,所以一些交互式键,如C-a ...或C-a :(进入命令行模式)
所以我是GNU Screen和Tmux等多路复用器的忠实粉丝,但即使使用 Screen 多年,我仍然认识到那里有很多我不知道的东西(而且我只使用 Tmux 几个月,所以它更糟)。
您在这些软件上使用了哪些配置、提示和技巧(两者或每个软件都无关紧要)?
我使用它作为我的屏幕配置(我想我是从 Ubuntu 的默认设置中改编的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'
Run Code Online (Sandbox Code Playgroud)
这是一个简单的配置,可以让状态栏显示一些颜色,但我确信我可以用 screen 和 Tmux 做更多的事情,并且很想知道它。
我可以使用以下命令创建一个分离的屏幕会话:
[user1@host-pc ~]$ screen -d -m -S sname program
Run Code Online (Sandbox Code Playgroud)
...并使用以下命令恢复它:
[user1@host-pc ~]$ screen -r sname
Run Code Online (Sandbox Code Playgroud)
有没有办法让与user1访问会话在同一组中的用户?
编辑:我已阅读手册页,并且了解多用户模式。我特别询问是否允许按用户组 (/etc/group) 共享屏幕会话。
即组users中的所有用户都可以共享会话sname。无需手动添加每个用户进行筛选。
我想开始屏幕分离会话,但我想评估一些 bash。似乎 screen 只支持可执行文件和二进制文件。我想做一些魔法,比如:
screen -d -m script.sh 2>&1 | tee logfile.log
Run Code Online (Sandbox Code Playgroud)
但这显然不起作用。引用在这里没有帮助。我唯一的想法是创建一个包装脚本来执行此重定向,然后直接调用它,例如:
screen -d -m wrapper_script.sh
Run Code Online (Sandbox Code Playgroud)
还有其他想法吗?谢谢。
这里有没有人知道如何+-*/从腻子中让数字键盘上的 GNU 屏幕工作?
数字工作正常,但不是运营商。在/似乎绑定到命名当前壳或可能启动新的外壳。我的主机操作系统是 ubuntu 9.04(我运行屏幕的操作系统)。
我已经在我的 .screenrc 中为屏幕会话设置了密码。它工作得很好,每当我需要重新连接到屏幕会话时,我都需要输入密码。还有另一个功能可以锁定当前终端(ctrl+a, x)。这是一个非常棒的功能,可以非常快速地锁定终端,我还让它在 20 分钟空闲时间后自动锁定终端。为此,我在 .screenrc 中添加了“idle 1200 lockscreen”这一行。
然而,我的问题是,一旦终端处于锁屏状态,似乎没有密码可以解锁它。不是屏幕密码,不是我的用户登录密码。我不知道在哪里设置此锁屏状态的密码,联机帮助页或我在网上找到的任何内容似乎都认为提及它很重要。手册页说它使用 /usr/bin/lck 或 /usr/bin/lock 或“内置”,但我没有前两个二进制文件,也不知道这个内置是什么。有什么帮助吗?
在过去的日子里,我非常沉迷于使用组合终结器(全屏)+ screen + vim。但是我遇到了 ctrl + right 和 ctrl + left 键映射的问题,它们是擦除文本而不是跳转单词。我已经检查过,它在仅使用终止符和 vim 时按预期工作。
有人知道如何解决这个问题吗?
提前致谢
我对 screen 很陌生,但已经根据我在互联网上找到的各种建议配置了我的 ~/.screenrc 文件。我有一个问题,但我确信可以很容易地解决它;我认为这是一个termcap设置..?
在独立 bash(在 Mac OSX 10.6 上)中使用 less、vim、top 或其他程序后,退出这些程序时,终端的缓冲区将清除,当前命令行上方的行将是我输入的上一个命令。
但是,对于屏幕,当我退出这些程序中的任何一个时,屏幕缓冲区不会清除/刷新,我仍然会看到我在该程序中看到的内容..有意义吗??
例如在独立的 bash(没有屏幕)中:-
hostname:~ auser$ vim afile
[do stuff in file, then :q to exit]
Run Code Online (Sandbox Code Playgroud)
退出后我会看到:-
hostname:~ auser$ vim afile
hostname:~ auser$
Run Code Online (Sandbox Code Playgroud)
但在屏幕上:-
bash-3.2$ vim afile
[do stuff in file, then :q to exit]
Run Code Online (Sandbox Code Playgroud)
退出后,我会看到整个屏幕:-
~ # [Empty lines in vim are represented by these tilda characters. ]
...
~ # [ Every line on the screen is one of these tildas ]
bash-3.2$ # [ This …Run Code Online (Sandbox Code Playgroud) 我发现如果我在 byobu 屏幕中进入“复制模式”或“回滚模式”,从它分离并保持运行,缓冲区将填满并最终阻塞我在屏幕中运行的进程。(大概是因为该进程被阻止写入 stdout,因为没有人消耗字节。)
这种行为是毁灭性的。是否有可能例如
从屏幕分离时自动退出复制/回滚模式,
或者
一旦缓冲区已满,让处于复制/回滚模式的视图的位置向前移动,以允许进程继续执行
很高兴听到有关这方面的任何建议。