HUP doesn't send to processes when logout

平天韩 hanpingtian at gmail.com
Tue Dec 30 09:20:20 UTC 2008


2008/12/30, Rick Stevens <ricks at nerd.com>:
> 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.
>

Thank you very much for pointing this out.

> Try it again, but run "shopt -s huponexit" before executing the
> background process.  When you log out, HUPs should be sent to child
> processes.

Yes, I have seen the HUP signal being sent to the background process
if set the "huponexit".

But even though i ignore HUP in the background process, it quits every
time when logout, after
echo a line of "Ignore HUP" to /tmp/trap.out. What's wrong?

> ----------------------------------------------------------------------
> - 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 -
> ----------------------------------------------------------------------
>
> --
> fedora-list mailing list
> fedora-list at redhat.com
> To unsubscribe: https://www.redhat.com/mailman/listinfo/fedora-list
> Guidelines: http://fedoraproject.org/wiki/Communicate/MailingListGuidelines
>




More information about the users mailing list