GNU screen quitting -- sigterm to running process

2

I want to quit screen session. For this, I use screen -S session_name -X quit. This works well, but not like I would.

The program running in screen has a handler for SIGTERM, and I really need this handler to execute, so that it can perform proper cleanup. However, running screen -S session_name -X quit results in the program quitting without having its handler invoked.

A simple kill $(pidof bla) results in the invocation of my handler, proper cleaning, and finally the closing of the screen session.

However, I'd like to be able to stop all this by closing the screen using its session's name, and letting it "forward" the SIGTERM signal.

Any help appreciated, thanks.

Xaqq

Posted 2013-08-13T14:22:57.777

Reputation: 141

1I don't see any other way than a script that read the tree of process spawned from the original screen (session should match PID) and send SIGTERM to all process starting with leaves. At the end of the script, just send the screen quit command. – mveroone – 2013-08-13T14:38:57.847

Answers

2

The solution I came with is inspired by the one suggested by @Kwaio. I my case, I only have one process that is interested in receiving the SIGTERM signal. This process already forward it to its children.

This assumes that there is only one screen session with a given name.

kill $(ps h --ppid $(screen -ls | grep session_name | cut -d. -f1) -o pid)

Xaqq

Posted 2013-08-13T14:22:57.777

Reputation: 141