I have script I am trying to use to monitor the output of another script that is being piped to it by:

perl script2.pl | script1.pl

Script1.pl outputs Good CRC/Bad CRC at 1-5 hz or so. It uses Device:SerialPort to read telemetry and feed it to MySQL data but occasionally hangs and needs to reset the tied file handle to the serial port and the connection to the Db. This works fine though the control interface, but I really need to monitor it and restart it anytime telemetry stops for more than 15-20 seconds without relying on user input to reset it.

The monitoring script is along the lines of:

#!/usr/bin/perl use strict; my ($timeout, $lastGoodTime); $timeout = 20; # Timeout in seconds while(-f pid.txt) { my $inLine = <>; if ($inLine ne '') { print "$inLine\n"; if ($inLine =~ /^Done/) { print "Exiting\n"; $lastGoodTime = time; exit; } elsif (( $inLine eq '' ) && ( time > ( $lastGoodTime + $timeout )) +) { &requestRestart(); } }

To my mind the above code snippet ought to work but there appears to be something I am missing and/or not understanding about how the <> works. Any help/advice would be greatly appreciated. -Sean


In reply to Detecting Timeout of piped data by sriordan

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.