【问题标题】:Attach to 'screen' session with creating a new screen window通过创建新的屏幕窗口附加到“屏幕”会话
【发布时间】:2012-05-22 21:47:10
【问题描述】:

我有一个使用多个窗口运行的屏幕会话。我想附加到它,在其中创建一个新的屏幕窗口并在该新窗口中启动一个 shell。

问题:如何从屏幕会话之外的命令行执行此操作?

我已经尝试了很多,例如。 G。 screen -x(但它附加到现有的屏幕窗口之一;它不会创建新的,也不会启动新的外壳)。欢迎任何提示。

环境是 Linux (Ubuntu 12.04)。

【问题讨论】:

  • 似乎没有标准的做法。您可以在mailing list中搜索
  • 我会接受这个答案,因为我在那里找到了一些东西,谢谢! :)
  • @Alfe 如果您找到了正确的答案,请自行发布。如果它是正确的答案,您可以在一段时间后接受自己的答案。此外我很好奇:P

标签: linux shell gnu-screen detach


【解决方案1】:

要选择要加入的窗口,请使用-p 选项。提供+ 将创建一个新的,因此您的命令很简单:

screen -x session_name -p +

这在手册页上有记录:

-p n̲u̲m̲b̲e̲r̲_o̲r̲_n̲a̲m̲e̲|̲-̲|̲=̲|̲+̲

Preselect a window. This is useful when you want to reattach to a  
specific windor or you want to send a command via the "-X" option  
to a specific window. As with screen's select commant, "-" selects  
the blank window. As a special case for reattach, "=" brings up the  
windowlist on the blank window. 

【讨论】:

  • 我再次查看了我的手册页(版本 4.00.03jw4),只找到了-p number_or_name(不是|-|=|+)。然后我查看了一个稍新的版本(4.01.00devel)并找到了你的概要行。令人困惑的是,您粘贴的文本来自较旧的手册页(没有描述任何关于 + 的内容),而我的测试中较新的手册页有这个描述 + 的附加文本:… while a "+" will create a new window. The command will not be executed if the specified window could not be found. 所以这是一个新选项!感谢您指出这一点,我认为它解决了我的问题。
【解决方案2】:

我在邮件列表中找到了一些东西,谢谢 tuxuday :)

我现在是这样做的:

#!/bin/bash
screen -X screen -t NEWWINDOW  # create new window (switches existing attached terminal)
sleep 0.1
screen -X other  # switch existing attached terminal back to its old window
sleep 0.1
gnome-terminal -e 'screen -x -p NEWWINDOW'  # connect to new window

我不确定这些睡眠,也许它们在所有环境中都不是必需的,但我可以轻松地等待这 0.2 秒。

我的.bash_aliases 正在延迟更改屏幕窗口标题,因此尴尬的NEWWINDOW 不会持续很长时间(因此不会妨碍对该脚本的进一步调用)。

【讨论】:

  • 我从邮件列表中得到的诀窍是screen -X other
  • 看看这个blog entry。它建议使用会话命令文件(只是一个包含所有命令的文件,如screenselectother)并运行screen -X source sessionfile,而不是多次调用screen -X。好方法
  • 我只给screen -X 打了两次电话……但如果该脚本增长,会话命令文件方法值得一看:)
  • 是的,你是对的,我只是指出它,因为我觉得它很整洁。
【解决方案3】:

将新的分离窗口添加到sesion_name 并运行command

screen -S sesion_name -x -X screen bash -c 'command; exec bash'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-15
    • 2011-07-10
    • 1970-01-01
    • 2018-09-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多