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=20
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=20
and terminated as you would like.
This doesn't seem like the correct behavior.=20
With or without a controlling terminal,=20
the remote command should be terminated.
I've submitted this question to openssh-unix-dev.
--- 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.
Jared C. Davis wrote:[color=blue]
> Is there a way to tell SSH that the remote task should be killed once=20
> 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=20
> sleep command kept running on remote for the full 100 seconds. I=20
> think I want to be able to tell the remote machine, "if I interrupt=20
> the ssh client, then kill the process I sent you."
> Maybe I should be doing something else. I'm working on a script that=20
> uses SSH to send some commands to remote machines, but sometimes these[/color]
> commands can get into infinite loops and need to be killed. When this[/color]
> happens, I'd like to be able to have my program kill them. It seemed=20
> most straightforward to kill the ssh client, but then I discovered=20
> this does not kill the remote process.