12 linux gnu-screen
我在屏幕中启动第一个命令,如下所示:
screen -d -m -S testen -t lalala watch df -h
Run Code Online (Sandbox Code Playgroud)
这给了我一个在后台运行的屏幕会话,我可以稍后重新连接。
如何在同一屏幕会话的新窗口中运行第二个命令?
小智 11
在分离模式 ( )下,使用适应终端大小 ( )-S
的命名窗口 ( -t
)启动命名屏幕会话-A
( -d -m
):
screen -S mySessionName -t myWinName0 -A -d -m
Run Code Online (Sandbox Code Playgroud)
-t
在同一个屏幕会话 ( -S
) 中启动另一个命名窗口( ):
screen -S mySessionName -X screen -t myWinName2
Run Code Online (Sandbox Code Playgroud)
将一些命令 ( -X stuff $'cmds'
)填充到-p
会话 ( -S
) 中的第一个命名窗口 ( ) 中:
screen -S mySessionName -p myWinName0 -X stuff $'echo myWinName0\necho cmd1\necho cmd2\n'
Run Code Online (Sandbox Code Playgroud)
将一些命令 ( -X stuff $'cmds'
)填充到-p
会话 ( -S
) 中的第二个命名窗口 ( ) 中:
screen -S mySessionName -p myWinName1 -X stuff $'echo myWinName1\necho cmd1\necho cmd2\n'
Run Code Online (Sandbox Code Playgroud)
列出屏幕会话并重新连接以查看发生了什么:
screen -ls
screen -r mySessionName
Run Code Online (Sandbox Code Playgroud)
注意:换行符 ( \n
) 模拟按下Enter。您也可以使用分号来分隔命令。
小智 6
尝试了上述方法,但第二个命令没有在第二个窗口上执行。我通过使用窗口编号而不是窗口名称稍微调整了示例:
创建会话
screen -S mySessionName -t 0 -A -d -m
Run Code Online (Sandbox Code Playgroud)创建第二个窗口
screen -S mySessionName -X screen -t 1
Run Code Online (Sandbox Code Playgroud)发送命令到第一个窗口
screen -S mySessionName -p 0 -X stuff $'echo myWinName0\necho cmd1\necho cmd2\n'
Run Code Online (Sandbox Code Playgroud)发送命令到第二个窗口
screen -S mySessionName -p 1 -X stuff $'echo myWinName0\necho cmd1\necho cmd2\n'
Run Code Online (Sandbox Code Playgroud)现在检查命令是否已在第一个窗口上运行
screen -R mySessionName -p 0
Run Code Online (Sandbox Code Playgroud)现在检查命令是否已在第二个窗口上运行
screen -R mySessionName -p 1
Run Code Online (Sandbox Code Playgroud)使用 Screen 4.00.03 (CENTOS 6.3 x64) 进行测试。
内屏:
:screen newcmd
跑步newcmd
外部:
screen -X testen "screen newcmd"
Run Code Online (Sandbox Code Playgroud)