我对 的经验很少screen
,最近发现它有窗户。在此之前,我只是为我需要运行的每个进程创建一个新会话(我知道,对吧?)。然而,既然我发现了,我希望我的进程在单个屏幕上运行。启动时,需要在该屏幕的窗口中运行多个进程,但我不知道如何在特定窗口中运行它们,如果会话不存在则创建会话。我希望进程占用特定的窗口(8 和 9)。
我知道它将screen -dmS main bash
在名为 main 的屏幕会话中执行 bash,但这总是会创建一个新会话。我不知道要运行什么,以便 bash 在窗口 9 中的一个名为 的会话中运行main
,无论该会话之前是否存在,main
之后只存在一个会话。
我需要在启动时运行哪些命令才能实现此目的?
答案1
您需要使用-ls
标志。
bash-4.3$ screen -dmS main bash
bash-4.3$ screen -ls
There is a screen on:
7144.main (2017年01月28日 20时05分05秒) (Detached)
1 Socket in /var/run/screen/S-xieerqi.
-ls
将向您显示现有会话,您可以使用-x
标记重新附加到它们。从脚本角度来说,你可以这样做:
bash-4.3$ my_session=$(screen -ls | awk '/[[:digit:]]\.main/{print $1}')
bash-4.3$ screen -x $my_session