I have little experience with screen, and recently found out that it has windows. Before this, I was just creating a new session for every process I needed to run (I know, right?). However, now that I found out, I want my processes to run in a single screen instead. On startup, several processes need to be ran in windows in this screen, but I can't figure out how to run them in a specific window, creating a session if it doesn't exist. I'd like the processes to take up specific windows (8 and 9).

I know that screen -dmS main bash will execute bash in a screen session named main, however this will always create a new session. I don't know what to run so that bash is running in window 9 in a session called main, whether or not that session existed beforehand, with only one session main existing after.

What command(s) do I need to run at startup to make this happen?

1 Answer 1


You need to use -ls flag.

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 will show you existing sessions, and you can reattach to them with -x flag. Script-wise, you could do something like this:

bash-4.3$ my_session=$(screen -ls | awk '/[[:digit:]]\.main/{print $1}')
bash-4.3$ screen -x $my_session

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .