Questions tagged «gnu-screen»

屏幕(GNU Screen)是一个全屏窗口管理器,它在多个进程(通常是交互式外壳程序)之间多路复用物理终端。对于计算机监视器,请参阅标签/ monitors。

3
将文本输入发送到分离的屏幕
我正在尝试在我的unRAID服务器上运行minecraft服务器。 服务器将在外壳中运行,然后坐在那里等待输入。要停止它,我需要输入“ stop”并按Enter,然后它将保存世界并优雅地退出,我回到了shell中。如果我通过telnet进入NAS盒来运行它,那一切都可以,但是我想直接在盒中运行它。 这是我以前的第一次尝试: #define USER_SCRIPT_LABEL Start Minecraft server #define USER_SCRIPT_DESCR Start minecraft server. needs sde2 mounted first cd /mnt/disk/sde2/MCunraid screen -d -m -S minecraft /usr/lib/java/bin/java -Xincgc -Xmx1024M -jar CraftBukkit.jar MCunraid是我包含Craftbukkit.jar和所有世界文件的文件夹。如果我直接输入该屏幕行,则该屏幕会分离安装程序并启动服务器。如果我从脚本中执行该行,则似乎无法设置屏幕 要停止服务器,我需要在STOP中“键入”,然后按Enter。我的方法是 screen -S minecraft -X stuff "stop $(echo -ne '\r')" 向屏幕“ minecraft”发送文本停靠点和回车符。但这不起作用,即使我直接在命令行上输入也是如此。但是,如果我使用“ screen -r”,则可以在服务器运行的情况下进入屏幕,然后键入“ stop”,它将正常关闭。 如果我远程登录并手动执行该服务器,则服务器运行良好,只需要运行它即可,而无需与远程计算机连接。
44 linux  gnu-screen 

5
设置屏幕会话的名称
有没有一种方法可以给unix屏幕会话赋予特定的名称?例如,假设我多次运行相同的程序,但每次都使用不同的参数,而我想知道哪个是哪个。
44 gnu-screen 

2
如何从tmux内更改默认的新窗口目录
我最近从GNU屏幕转到了tmux。 我发现它非常相似,但是得到了更大的支持(由于neovim中的转义时间问题,我切换了-分辨率仅适用于tmux)。 不幸的是,在tmux中,我找不到与此类似的命令: screen -X eval "chdir $(some_dir)" 上面的命令从GNU屏幕中更改了新窗口/屏幕/窗格的默认目录,因此当我按Ctrl+ a(类似于tmux Ctrl+ b)时,在$(some_dir)目录中打开了新窗口。 tmux中有类似的东西吗? 解答: 我使用了@Lqueryvg答案,并将其与@Vincent Nivoliers建议的注释合并在一起,这给了我一个命令的新绑定,该命令attach -c "#{pane_current_path}"将当前目录设置为默认目录。 谢谢。
42 linux  tmux  gnu-screen 

6
如何在tmux中像在屏幕上那样在窗口内的窗格之间循环切换?
我以为将tmux窗格移至窗口是相同的问题,但事实并非如此。 由于经常使用GNU屏幕,我正在寻找tmux做同样的事情。我经常要做的事情是打开几个不同的窗口,一个在vim中打开一些代码,打开几个终端窗口以测试代码,有时还需要一两个窗口来处理其他各种事情。我垂直分割屏幕,通常在顶部窗格中有vim窗口,然后在底部窗格中具有其他窗口之一。 然后Ctrla,我使用的主要命令是,Tab在窗格之间旋转,以及Ctrla,n在窗格内的窗口之间旋转。例如,在顶部窗格中使用vim,我切换到底部窗格,然后在其他终端上旋转,以完成所需的操作。屏幕始终保持拆分状态。 问题是我无法找到可比的能力,屏幕的Ctrla,n在TMUX。切换窗口似乎无法在窗格内运行,但会完全跳转。如果屏幕被拆分,则似乎仅有的两个选项是跳转到某个未拆分的窗口,然后拆分它或对窗格进行子拆分。我要找的东西都不是。 建议(除了坚持使用屏幕之外)?

4
如何重命名GNU屏幕会话
我正在运行一个屏幕会话,我想更改它的名称。我知道在启动新的屏幕会话时,可以使用“ -S”选项为其命名。会话开始后,如何更改该名称?
41 gnu-screen 

4
nohup vs.屏幕
过去,我曾经做过nohup大型后台工作,但是我注意到很多人screen在这种情况下使用。是否screen提供了我所不知道的某种功能优势,还是仅仅是偏爱问题?

4
在tmux中是否有GNU Screen的“ log”命令的等效项?
在给定环境中进行更改时,我大量使用screen的“ log”命令将会话的输出记录到文件中。我搜索了tmux的手册页,但找不到对应的页面。是否有人知道tmux中的类似功能,还是我必须编写自己的包装脚本来做到这一点? 编辑:我知道'脚本'和其他实用程序,允许我记录会话。屏幕功能如此有用的原因是能够定义一个日志文件变量,该变量使用字符串转义符来唯一标识每个会话。 例如,我有一个shell函数,给定一个主机名,它将在新的屏幕窗口中SSH到该主机,并将窗口标题设置为该主机名。当我启动该会话的日志时,它以窗口标题为前缀。 如果tmux中不存在此功能,则必须创建一组新的Shell函数来设置要记录的会话的“脚本”。这并不是很困难,但是鉴于屏幕恰好满足了我的需要,因此不值得付出努力。
35 gnu-screen  logs  tmux 

2
一旦执行脚本结束,防止GNU屏幕终止会话
我试图强迫GNU屏幕创建一个“虚拟”终端,而不附加它,在脚本内部执行脚本,并且在脚本结束后不终止会话。 我尝试了许多组合,包括: screen -dmS udplistener /share/Sys/autorun/start_udp_listeners.sh 要么 screen -S udplistener -X /share/Sys/autorun/start_udp_listeners.sh 他们都没有工作。我要么获得没有执行脚本的会话,要么执行脚本,但是会话一旦完成就终止,或者出现“找不到屏幕会话”错误。 我基本上想做的是运行用PHP编写的UDP侦听器,并使它在无限循环中工作(不要中断侦听)。是的-我可以&在末尾运行PHP脚本,强制PHP CLI作为守护程序运行。问题是,我正在使用一块称为服务器的垃圾(QNAP-永远不要购买此垃圾!),这似乎没有理会。一旦注销SSH会话,脚本就会停止。 因此,screen似乎是唯一的选择。但是我不明白,为什么一旦执行的命令或脚本结束,它就会终止会话? 编辑:我也尝试过在互联网上找到的示例: screen -dmS name screen -S name -p windowname -X stuff 'mc ' 不缺!附加到(screen -R name)后,我看到Midnight Commander HASN尚未执行。尽管示例作者说过,但是会的。
34 gnu-screen 

5
在终端输出中搜索文本
我正在运行带有命令的应用程序,该命令$ grails run-app可打印如下所示的登录终端。 我想要的是user authorities在此日志中搜索特定文本(例如),以便我进一步进行验证。一种使用Logging Apis写入文本文件的方法,但是我现在想在终端中搜索它。 我在如何直接在终端上搜索提示screen命令的文本时发现了类似的问题,但是我不知道screen在这种情况下如何工作。我尝试过, $ screen grails run-app 但无法前进。 我可以看到带有 prayag@prayag:~/zlab/nioc2egdelonk$ screen -list There is a screen on: 8076.pts-2.prayag (10/06/2013 12:13:25 PM) (Attached) 1 Socket in /var/run/screen/S-prayag.

2
如何将“ screen”内部的输出输出到脚本?
我screen正在运行一个实例,并且需要在中执行一些代码screen,并将结果输出到脚本中。 第一部分很简单,我只是screen -S session_name -X eval 'stuff "$cmd"\015'。 (我修改了在脚本中找到的一行) 第二部分,获取输出,比较棘手。无论大小如何,如何获得整个输出?

3
强制GNU屏幕在重新连接时回流到当前端子宽度?
重新连接会话时,我想强制将GNU屏幕重排到现有的终端宽度。在我看来,在将机器升级到CentOS 6之前,这可以正常工作,但是我不知道如何还原它。(TERM=xterm) 每当我重新连接会话时,无论断开会话时处于什么状态,它都会在80列处启动,并同时调整终端的大小(在本例中为Puty)。 我要启动并重新连接: screen -aA -R <session> 我的.screenrc仅包含以下内容以及一些无关的键绑定: term xterm defscrollback 10000 # status line at the bottom hardstatus on hardstatus alwayslastline hardstatus string "${-}%{.0c}%-w%{.y0}%f%n %t%{-}%+w %=%{..G}[%H] %{..Y} %D %M %d, %Y %c | Load: %l" caption splitonly "%{.yK}%3n t" caption string "%{.c0}%3n %t" vbell off # Fix fullscreen …

4
保存完整的GNU屏幕会话状态
是否可以保留GNU屏幕窗口(或只是标准外壳程序)的“状态”,以便在重新启动后重新加载所有内容: 开壳数 每个外壳的名称 每个shell的当前目录 每个壳的历史 如果可能,其环境变量
32 shell  gnu-screen 

1
启动屏幕时如何跳过或跳过介绍性信息?
当我开始 screen,我收到一条消息,给出版本,版权和错误报告电子邮件地址。我不想每次开始都看到这个screen。搜索手册页似乎并没有找到解决方案,我希望这里的专家知道一种绕过此信息页的方法。
31 gnu-screen 

5
如何根据主机名更改GNU屏幕状态行?
我有一个共享的主目录,该目录通过NFS在我登录的所有UNIX服务器上自动挂载。我希望有一个.screenrc(例如),将主机名以不同的颜色置于hardstatus行中,以指示何时登录生产和开发。我们的主机名可以通过使用模式匹配轻松完成。 有什么办法可以将条件语句放入.screenrc中?手册页的快速grep似乎没有发现任何明显的内容。 编辑: 为了澄清,我已经有一个自定义的硬状态行;我想根据调用屏幕的主机名来更改显示的某些颜色/字段。我的PS1已经有了类似的东西,但是当我从这些主机跳到路由器/交换机时,我宁愿在屏幕状态行中这样做,这不允许我进行任何即时的着色。这样,我可以有一个用于生产的窗口,一个用于开发的窗口,屏幕状态行的颜色告诉我我正在浏览哪个窗口。


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.