如何在同一屏幕会话中运行第二个命令


12

我正在启动屏幕上的第一个命令,如下所示:

screen -d -m -S testen -t lalala watch df -h

这使我在后台运行一个屏幕会话,以后可以重新连接。

如何在同一屏幕会话中的新窗口中运行第二个命令?

Answers:


11

在分离模式()中,使用适应终端大小()-S的命名窗口(-t)启动命名屏幕会话-A-d -m):

screen -S mySessionName -t myWinName0 -A -d -m

-t在同一屏幕会话(-S)中启动另一个命名窗口():

screen -S mySessionName -X screen -t myWinName2

将一些命令(-X stuff $'cmds')塞入-p会话(-S)中的第一个命名窗口():

screen -S mySessionName -p myWinName0 -X stuff $'echo myWinName0\necho cmd1\necho cmd2\n'

将一些命令(-X stuff $'cmds')塞入-p会话(-S)中的第二个命名窗口():

screen -S mySessionName -p myWinName1 -X stuff $'echo myWinName1\necho cmd1\necho cmd2\n'

列出屏幕会话并重新连接以查看发生了什么:

screen -ls
screen -r mySessionName

注意:换行(\n)模拟按Enter。您也可以使用分号来分隔命令。


您不必做“填充”位。 screen -S sessionName -t windowName1 -Adm <command> && screen -S sessionName -X screen -t windowName2 -Adm <command2>
莲花

4

内部屏幕:

  • Ctrl-Ac以打开一个新的外壳窗口
  • Ctrl-A:screen newcmd运行newcmd

外:

screen -X testen "screen newcmd"

嗨,grawity,我知道这一点,但是我想通过一个初始化脚本来做到这一点。基本上我想在同一屏幕会话中的单独窗口中启动2个命令。看到您了

1
@bob:在此答案中,请参见示例3,“外部屏幕”。
user1686

您好,screen -S testen -X 'screen echo "hi"'不起作用。

我也无法使-X方法正常工作。Fwiw,我的屏幕-v说“屏幕版本4.00.03(FAU)06
Lauri Lehtinen

4

尝试了以上方法,但是第二个命令未在第二个窗口上执行。我通过使用窗口编号而不是窗口名称对示例进行了稍微调整:

  1. 建立会议

    screen -S mySessionName -t 0 -A -d -m
    
  2. 创建第二个窗口

    screen -S mySessionName -X screen -t 1
    
  3. 发送命令到第一个窗口

    screen -S mySessionName -p 0 -X stuff $'echo myWinName0\necho cmd1\necho cmd2\n'
    
  4. 发送命令到第二个窗口

    screen -S mySessionName -p 1 -X stuff $'echo myWinName0\necho cmd1\necho cmd2\n'
    
  5. 现在检查命令是否已经在第一个窗口上运行

    screen -R mySessionName -p 0
    
  6. 现在检查命令是否已经在第二个窗口中运行

    screen -R mySessionName -p 1
    

已在Screen 4.00.03(CENTOS 6.3 x64)上进行了测试。


1

您可以通过-c参数设置备用.screenrc 。在这个新的screenrc中,您可以设置多个命令以在初始化屏幕会话时启动。

在此替代.screenrc的末尾,输入以下命令:

screen 1 cmd1 args
screen 2 cmd2 args

如果仅计划运行一种类型的屏幕会话,并且运行默认命令总是很好,则无需设置备用配置文件。

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.