Cyberithub

How to kill all detached screen sessions on Linux or Unix

Advertisements

In this article, we will see how to kill all detached screen session on Linux or Unix based systems. Screen utility provides a powerful feature of managing task and processes by detaching the session and allow it to run on background while you can perform other activities on foreground. This is mainly useful when you have to perform a long running task on remote servers such as taking database backup where you don't want the session to disconnect in between. Detaching session is a very flexible feature that allows you to perform multiple task from a single terminal interface.

You can always reattach the session to terminal and continue with your task. However sometimes you might face a scenario where you would like to kill all detached sessions running on the background. Here we will see how you can kill all the detached sessions on Linux or Unix based systems.

 

How to kill all detached screen sessions on Linux or Unix 2

How to kill all detached screen sessions on Linux or Unix

Also Read: How to Install PowerShell on Ubuntu or Debian

Before looking into how to kill detached sessions, let's first create few sessions.

cyberithub@ubuntu:~$ screen -d -m top
cyberithub@ubuntu:~$ screen -d -m watch ps -ef

As you can see above, we are creating two screen sessions. Below are the options used with above screen commands:-

  • -d: This option tells Screen to start a session in "detached" mode. Normally, when you start a Screen session, it opens and attaches to your current terminal window.
  • -m: This option forces Screen to create a new session, even if Screen is called from another Screen session. It ensures that a new session is created in all circumstances.

 

 

List all running sessions

To list all running screen sessions, run screen -ls command as shown below.

cyberithub@ubuntu:~$ screen -ls
There are screens on:
182568..ubuntu (23/03/24 06:16:37 PM IST) (Detached)
179434..ubuntu (23/03/24 06:15:39 PM IST) (Detached)
2 Sockets in /run/screen/S-cyberithub.

 

List only detached sessions

To list only the detached screen sessions, run screen -ls | grep Detached command as shown below.

cyberithub@ubuntu:~$ screen -ls | grep Detached
182568..ubuntu (23/03/24 06:16:37 PM IST) (Detached)
179434..ubuntu (23/03/24 06:15:39 PM IST) (Detached)

 

 

Kill a detached session

To kill a detached session, run screen -S <session id/name> -X quit command. For example, in our case we would like to kill a session with id 182568, so in that case we have to run screen -S 182568 -X quit command as shown below.

cyberithub@ubuntu:~$ screen -S 182568 -X quit

Here are the details of the options used with above screen command:-

  • -S: This option is used to specify the session name or session id.
  • -X: This option allows you to send a command to a specific screen session.

 

Reattach & kill a session

Before killing a detached screen session, if you are looking to reattach then run screen -r <id/name> command. For example here we are reattaching session id 182568 by using screen -r 182568 command.  Here -r option is used to reattach a session. Then killing that session by pressing q. Some of the sessions can also be killed by running exit or Ctrl+c command.

cyberithub@ubuntu:~$ screen -r 182568
[screen is terminating]

 

 

Kill all detached sessions

If you are looking to kill all the detached sessions only, then you can easily do it by using below command.

cyberithub@ubuntu:~$ screen -ls | grep Detached | cut -d. -f1 | awk '{print $1}' | xargs kill &> /dev/null

Now if you check again, you will see there are no active screen sessions running.

cyberithub@ubuntu:~$ screen -ls
No Sockets found in /run/screen/S-cyberithub.

Leave a Comment