HUP doesn't send to processes when logout

Rick Stevens ricks at nerd.com
Mon Dec 29 22:40:15 UTC 2008


Jerry Feldman wrote:
> On 12/29/2008 04:56 PM, ƽÌ캫 wrote:
>> 2008/12/30, Jerry Feldman <gaf at blu.org>:
>>   
>>> On 12/29/2008 10:05 AM, ƽÌ캫 wrote:
>>>     
>>>> hi,
>>>>
>>>> It seems that when I logout from the console, the background process
>>>> doesn't get HUP signal:
>>>> { trap "echo Ignore HUP >>/tmp/trap.out" 1; while sleep 3;do echo
>>>> hello >>/tmp/hello.txt;done; }&
>>>> And it seems it will become a daemon and run forever until rebooting.
>>>> Is this correct? Why it didn't get HUP signal?
>>>>
>>>> Thanks!
>>>>
>>>>
>>>>       
>>> Are you running this from a terminal window?
>>>     
>> I am running this in tty2, a console. I just type those into the
>> console and run it, then logout.
>>
>>   
>>> Are you possibly setting nohup in your environment.
>>>     
>> It seems it is. But how?
>>
>>   
>>> Are you typing the above commands directly? What happens if you place
>>> these into a script and run the script in the background?
>>>
>>> There are a number of things that can cause a shell script to ignore the
>>> HUP signal. I tested this as a script on an Ubuntu laptop, and it
>>> behaved the same as yours:
>>>
>>> The process remained. So the issue is not that exiting the parent
>>> process (GNOME Term) or logging out of GNOME fails to issue a HUP, it is
>>> that the process itself ignores the HUP signal since I sent a "kill -HUP
>>> <pid>" to the process.
>>>
>>> If you simply send the HUP signal, you will see that "Ignore HUP" will
>>> appear in /tmp/trap.out".
>>>
>>>     
>> I have the same results with you.
>>
>>   
>>> The signal(1) command is probably the culprit, though the man pages are
>>> vague.
>>>
>>>     
>> I suspect of that maybe the logout doesn't send out HUP to these
>> background processes?
>>   
> After looking at this again now that I understand the specific issue. I
> would agree.

By default, the "huponexit" option is NOT set on bash shells, so a
terminating interactive shell does NOT send HUPs to background
processes.

Try it again, but run "shopt -s huponexit" before executing the
background process.  When you log out, HUPs should be sent to child
processes.
----------------------------------------------------------------------
- Rick Stevens, Systems Engineer                      ricks at nerd.com -
- AIM/Skype: therps2        ICQ: 22643734            Yahoo: origrps2 -
-                                                                    -
- Do not taunt the sysadmins, for they are subtle and quick to anger -
----------------------------------------------------------------------




More information about the fedora-list mailing list