How can I start multiple screen sessions automatically?

screen -dmS "$SESSION_NAME" "$COMMAND" "$ARGUMENTS" will spawn a screen running $COMMAND in the background.

You can see active sessions with screen -ls and reattach with screen -r "$SESSION_NAME".

Dead sessions can be killed with screen -wipe.


To start multiple sessions automatically, set up a .screenrc file, a config file for screen. In it, you can create sessions, start programs, change the working dir etc. I use it to initialise my screen session.

Simple exampe for a .screenrc file:

# don't display the copyright page
startup_message off

# increase scrollback buffer size
defscrollback 10000

# create windows
screen -t TODO vim TODO.txt
chdir src
screen -t coding vim main.c
screen -t run 

The screen commands above each create one screen session. -t sets the session's title; the rest of the line is the command to run and its parameters.

Thus, the first and second screen line start a session and launch vim inside. The third one just starts a session and drops you at a prompt. chdir changes the working directory for all subsequent sessions.

If you want to have multiple .screenrc files, just name them any way you want, and select one with screen -c myscreenrc.


You can use the d, m, S options together:

screen -Sdm s1
screen -Sdm s2
screen -Sdm s3

S : To create a screen

d : detach from a screen

m : To enforce creation of screen, regardless whether screen is called from within another screen or not.