Mailinglist Archive: opensuse (3135 mails)

< Previous Next >
Re: [opensuse] shell script newbie: how to display progress of a pipe?
  • From: "Greg Freemyer" <greg.freemyer@xxxxxxxxx>
  • Date: Wed, 7 Mar 2007 11:44:54 -0500
  • Message-id: <87f94c370703070844g3d8c3e81h7e9350542fe0fd1d@xxxxxxxxxxxxxx>
On 3/6/07, M Harris <harrismh777@xxxxxxxxxxxxx> wrote:
On Monday 05 March 2007 19:50, Zhang Weiwu wrote:
> What would you suggest for my case to report progress?
        Write a non-buffering stage to preceed the sed stage.

        command | non-buffering-counter | sed-stage | command2

        The non-buffering counter stage immediately passes each input to its output
(does not buffer [stack] the data) and also keeps a running total of
bytes/words that can be posted to a log file at convenient intervals of mbs.

dd might be non-buffering if you set it low-enough blocksize.

something like:
command | dd bs=1b | sed-stage | command2

Then if you can figure out how to get the pid for dd.  (ie. I don't
know how to get the pid of a command in the middle of a pipe call like
that.  Maybe after the fact via ps -ef | grep | cut ...)

You can have a loop that tells dd to give a status update every 10
minutes or so:

while true
do
   sleep 600
   kill -sigusr1 $dd_pid
done

None of this is tested but you get the idea.

Greg
--
Greg Freemyer
The Norcross Group
Forensics for the 21st Century
--
To unsubscribe, e-mail: opensuse+unsubscribe@xxxxxxxxxxxx
For additional commands, e-mail: opensuse+help@xxxxxxxxxxxx

< Previous Next >
References