Beefy Boxes and Bandwidth Generously Provided by pair Networks
"be consistent"
 
PerlMonks  

Unwanted SSH child survives after ssh session

by cmv (Chaplain)
on Aug 11, 2009 at 20:03 UTC ( #787748=perlquestion: print w/ replies, xml ) Need Help??
cmv has asked for the wisdom of the Perl Monks concerning the following question:

Perlmonks-

Running the following ssh command locally:

ssh user@host tail -f /etc/passwd

Results in the following 2 processes on the far end machine (note PGID & SID):

UID PID PPID PGID SID CMD root 22409 4763 4763 4763 sshd -f /etc/ssh/sshd_config -R user 22411 22409 22411 22411 tail -f /etc/passwd

As expected, when I ctrl-c out of the ssh command on the originating local computer, I loose the sshd_config process at the far end, but the tail -f child process survives and looks like this:

UID PID PPID PGID SID CMD user 22411 1 22411 22411 tail -f /etc/passwd

I would like for the child process to die when I ctrl-c out of the ssh command. How can I do this?

Put another way, how can I get the child process (tail -f) to be in the same process group as the parent (sshd_config)?

My first thought was to use perl's setpgrp command: setpgrp(PID, PGRP) where:

PID - Child's process ID PGRP - Parents process group

However, this seems to always fail on SunOS. Probably because of what is described in the setpgrp camel book description:

Sets the current process group for the specified PID, 0 for the current process. Will produce a fatal error if used on a machine that doesn't implement POSIX setpgid(2) or BSD setpgrp(2). If the arguments are omitted, it defaults to 0,0 . Note that the BSD 4.2 version of setpgrp does not accept any arguments, so only setpgrp(0,0) is portable. See also POSIX::setsid() .

Any help is appreciated.

Thanks!

-Craig

Comment on Unwanted SSH child survives after ssh session
Select or Download Code
Replies are listed 'Best First'.
Re: Unwanted SSH child survives after ssh session
by almut (Canon) on Aug 11, 2009 at 21:05 UTC

    I think this is an ssh issue... Try  ssh -t user@host tail -f /etc/passwd

      almut++ That was it. The -t option works great! Thanks.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://787748]
Approved by planetscape
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others exploiting the Monastery: (11)
As of 2015-07-30 14:50 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (271 votes), past polls