[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
signal propogation to backgrounded subshells
From: |
Jeff Weber |
Subject: |
signal propogation to backgrounded subshells |
Date: |
Tue, 6 Mar 2007 11:24:24 -0600 |
User-agent: |
KMail/1.9.1 |
I have a situation whereby my script may encounter commands which may block
for a "long time", before completion. However, for other reasons, my initial
script must complete "quickly".
My solution has been to encapsulate the blocking commands in a subshell, then
run the subshell in the background. Thus the parent script can complete
quickly.
The background subshell needs to execute a serial list of commands. (During
script development, I am using sleep to mimic blocking commands.)
The problem occurs when trying to cleanup the backgrounded subshell, if it is
still active. I would like to be able to send a signal to the subshell,
which would terminate the subshell and all active subshell commands. This is
not the behavior I am seeing.
Rather, I am seeing the subshell bash process terminate, but the currently
active subshell child process continues to execute, with a new parent pid of
1 (init). That is, the signal kills the subshell, but not the active subshell
child process. Again, I want every process associated with the subshell to
die upon receipt of the signal.
Here's some sample code:
# create a backgrounded subshell to execute long-running processes
#( sleep 300 && sleep 400 && sleep 500 )& # doesn't work, bummer
$SHELL -c "sleep 300; sleep 400; sleep 500" & # doesn't work, bummer
pid=$!
echo background job $pid
When I run this, it announces the background job pid, which I then kill. I've
tried SIGHUP, SIGINT, SIGTERM. The backgrounded bash job terminates as
expected. However, the active sleep job continues to execute, now being
owned by init. Somehow, it "escaped". I want any active sleep job to die
too.
Is this a bug, feature, or misunderstanding? Regardless, is there a simple
solution to get the behavior I want?
config:
GNU bash, version 3.1.17(1)-release (i586-suse-linux)
Copyright (C) 2005 Free Software Foundation, Inc.
TIA,
Jeff Weber
- signal propogation to backgrounded subshells,
Jeff Weber <=
- Re: signal propogation to backgrounded subshells, Andreas Schwab, 2007/03/06
- Re: signal propogation to backgrounded subshells, Jeff Weber, 2007/03/06
- Re: signal propogation to backgrounded subshells, Andreas Schwab, 2007/03/06
- Re: signal propogation to backgrounded subshells, Jeff Weber, 2007/03/06
- Re: signal propogation to backgrounded subshells, Andreas Schwab, 2007/03/06
- Re: signal propogation to backgrounded subshells, Matthew Woehlke, 2007/03/06
- Re: signal propogation to backgrounded subshells, Andreas Schwab, 2007/03/06