Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

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.

share|improve this question
1  
I 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. –  Kwaio Aug 13 '13 at 14:38
add comment

1 Answer 1

up vote 0 down vote accepted

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)
share|improve this answer
add comment

Your Answer

 
discard

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.