Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I'm trying to build a command that launches screen, creates four sessions with different names, and run four different commands.

I know how to do this manually:

1. screen
2. ./command1 args
3. CTRL-A :sessionname Session 1
5. (GOTO 2)

Can I do this with a bash script or something? How would I do so?

share|improve this question
up vote 9 down vote accepted

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.

share|improve this answer
It gets the job done! – hughes Feb 5 '12 at 1:23

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.

share|improve this answer

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.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.