Re: Closing a process when SSH is interrupted?




I've just run across this problem too using Solaris openssh-4.4p1.
I have learned that using 'trap' is no help because the spawned shell
never receives any signal or Ctrl-C.

Its parent sshd detects the end of the network connection
and abandons the spawned shell without notice.

One work around I found is to use 'ssh -t' to invoke the remote command.
This forces the spawned shell to have a controlling terminal.
Invoked this way, the remote command is correctly interrupted
and terminated as you would like.

This doesn't seem like the correct behavior.
With or without a controlling terminal,
the remote command should be terminated.
I've submitted this question to openssh-unix-dev.

Mark Glemboski


--- begin included message ---
an ssh session spawns a remote shell, which is hopefully Bash. Have you
tried using traps to mop up your application on exit rather than letting

it be orphaned to init?

trap "kill someprocess" SIGNAL1 SIGNAL2 etc...

see man bash for details... or whatever your shell's man page is.

-h

Hari Sekhon



Jared C. Davis wrote:
Hi,

Is there a way to tell SSH that the remote task should be killed once
the client disconnects?

For example, I tried running:

me@local$ ssh remote sleep 100

And then typed [Ctrl+C] to kill the ssh command on local. But the
sleep command kept running on remote for the full 100 seconds. I
think I want to be able to tell the remote machine, "if I interrupt
the ssh client, then kill the process I sent you."

Maybe I should be doing something else. I'm working on a script that
uses SSH to send some commands to remote machines, but sometimes these

commands can get into infinite loops and need to be killed. When this

happens, I'd like to be able to have my program kill them. It seemed
most straightforward to kill the ssh client, but then I discovered
this does not kill the remote process.

Thanks!

Jared





Relevant Pages