Server Fault is a question and answer site for system and network administrators. Join them; it only takes a minute:

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 have multiple screens running on an Ubuntu server that are initiated as:

screen -dmS screen1 cmd
screen -dmS screen2 cmd

And I need to kill one screen, but not all of them. What is the correct command to kill a single particular screen with its name? I've read through the man pages but I can't seem to find the command I am looking for.

Also I want to write this command into a bash script so I can't simply screen -r screen1 then press Ctrl+X as I normally would.

share|improve this question
Sorry, thought this was about Donkey Kong for a second – Chopper3 Dec 21 '09 at 18:46
I love this t-shirt… – Chopper3 Dec 21 '09 at 18:57
That is a nice tee, most people won't get it thou, unless they've seen "The King of Kong": – BassKozz Dec 21 '09 at 19:07
The correct word for an object of a phrase is "thee". – Dennis Williamson Dec 21 '09 at 19:12
You said "get it thou" here and "Thanks thou" below. It should be "get it [for] thee" and "Thanks [be to] thee". – Dennis Williamson Dec 21 '09 at 23:08
up vote 9 down vote accepted

From the man page :

   -X   Send the specified command to a running screen  session.  You  can
        use  the  -d or -r option to tell screen to look only for attached
        or detached screen sessions. Note that this command  doesn't  work
        if the session is password protected.

You can do :

        screen -X -S <sessionid> kill
share|improve this answer
PERFECT!!! Thanks defraagh, musta missed that in the man. – BassKozz Dec 21 '09 at 19:05
Good to know :-) – ℝaphink Dec 21 '09 at 20:05

If you do a screen -list, you'll notice that each screen name begins with a number, which is the PID of the screen:

 $ screen -list
There are screens on:
        12281.pts-1.jonah       (12/21/2009 07:53:19 PM)        (Attached)
        10455.pts-1.jonah       (12/19/2009 10:55:25 AM)        (Detached)
2 Sockets in /var/run/screen/S-raphink.

From there, just send a KILL signal to this specific PID:

$ kill 12281

and it will kill the specific screen.

share|improve this answer
this won't work because I am running it from a bash script, and I rather not have to pull the PID from screen -list that matches the correct screen... defraagh's answer above worked like a charm. Thanks thou. – BassKozz Dec 21 '09 at 19:03
Ok, good that defraagh had a perfect solution for it. – ℝaphink Dec 21 '09 at 20:05

defraagh's solution doesn't work for me, however I can kill the screen session using Raphink's idea:

screen -list get the process ID


screen -wipe SESSIONID

share|improve this answer

Ive been dealing with this as follows:

PROCESS=$(screen -ls |grep screen1)
kill $(echo $PROCESS |cut -f1 -d'.')

The explanation is that you take the output of screen -ls and find the particular screen you are interested in by using grep then assign that string to the variable 'PROCESS'.

Since the output from screen -ls is always the PID followed by a period you can then use cut to get rid of the period and everything after it. in the above example we put that in parentheses and feed it to the kill command though you could do it linearly which might include writing to a temp file and reading out of that.

You need to make sure that your screen name is unique and that grep is ONLY returning the name of the screen you want to kill.

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.