in reply to threads and Net::OpenSSH

It's not clear to me if what you aren't understanding is related to the threading, or just to the operations of the ssh connections (of which I know nuu-thiiing; Nuu-thiiingg:)?

As best as I can tell, your use of threading seems perfectly vanilla and sensible.


With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.

The start of some sanity?

Replies are listed 'Best First'.
Re^2: threads and Net::OpenSSH
by rastoboy (Monk) on Mar 16, 2012 at 14:27 UTC
    BrowserUK: lol neither am I :-)

    I guess the main thing I don't understand is why my "tail -f" sessions die when I join those threads. My understanding of join() is that it tells the program to wait for the thread to finish. But a tail -f by itself would never finish, right?

      A quick look at the POD suggests that Net::OpenSSH implements timeouts that will close connections after a lack of network activity.

      A grep inside turns up this calculation which suggests that the default timeout is 90 (or 30?) seconds:

      my $timeout = int((($self->{_timeout} || 90) + 2)/3);

      My guess is that if the remote system is idle, tail -f syslog will produce no output and so the module closes the connection. Maybe you should consider using an explicit timeout.


      With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
      Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
      "Science is about questioning the status quo. Questioning authority".
      In the absence of evidence, opinion is indistinguishable from prejudice.

      The start of some sanity?

      Hmm, actually I'm seeing in some cases that it merely detaches those tail -f threads. What would be the best way to actually terminate those tail -f threads when I'm ready? There seem to be a lot of options.
        I'm seeing in some cases that it merely detaches those tail -f threads.

        Hm What "it"?

        Threads do not detach unless explicitly detached. join() will block until the thread terminates.

        Unless you've changed your code, what you're suggesting isn't possible.


        With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
        Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
        "Science is about questioning the status quo. Questioning authority".
        In the absence of evidence, opinion is indistinguishable from prejudice.

        The start of some sanity?