2016-07-29 67 views
0

我想写一个bash脚本重新连接到现有的linux屏幕,执行一些命令,然后从该屏幕分离。我知道在分离模式下创建一个新的Linux屏幕并执行一些命令。但我还没有找到一种方法重新连接到现有的Linux屏幕。如何编写bash脚本以重新连接到现有的linux屏幕?

+1

不是'screen -r' help? – Roman

+0

@Roman不,我也试过,它不起作用 – oblivion

+0

如果这是一个脚本,你不能只附加到屏幕上,然后继续你的脚本的其余部分。 attach命令实际上不会退出*直到分离。 – chepner

回答

1

试试这个;

[email protected]:/screen -ls 

There are screens on: 
     29229558.pts-5.host (Detached) 
     46661728.pts-22.host (Detached) 

[email protected]:/screen -r 46661728.pts-22.host 

如果您看到(附件)如下;

[email protected]:/screen -ls 
There are screens on: 
     29229558.pts-5.host (Detached) 
     46661728.pts-22.host (Atached) 

screen -D -r 46661728.pts-22.host 
2

您可以使用-S选项给屏幕会话命名。 例子:screen -dS NAME <command>

然后你就可以重新连接到使用screen -r NAME

0

要重新来,你必须遵循这个屏幕会话步骤:

之前去连接从屏幕,执行:

STDOUTTERM=$(who -m|awk '{print $2}') 

然后,您可以将stdout附加到任何你想要的。当你完成,重新连接到标准输出,执行此:

exec > /dev/$STDOUTTERM 
0

您可以发送命令来使用screen -X exec运行屏幕。请参阅手册页以了解重定向选项。

screen -X exec ls 

另外,您可以使用screen -X paste,因为如果用户键入它发送文本到正在运行的屏幕的标准输入缓冲区。这可以是在交互式shell中运行命令的一种方式。

screen -X register a "ls\n" 
screen -X paste a