Anzeige:
Ergebnis 1 bis 4 von 4

Thema: [Script]: Fortschrittsbalken für Piping

  1. #1
    Registrierter Benutzer
    Registriert seit
    30.12.2001
    Beiträge
    444

    [Script]: Fortschrittsbalken für Piping

    Wer mal wieder wissen will wie lange der tar denn jetzt noch ungefähr dauert oder sonst eine Status anzeige für irgendwelche gepipte Daten haben möchte ganz sich dieses Skriptes bedienen:

    Code:
    #!/usr/bin/perl
    
    use Term::ProgressBar;
    use constant VERSION => 1.02;
    
    if($#ARGV < 0) {
            print   "\n".   
                    "Usage: $0 <size of stream in bytes>\n".
                    "\n".
                    "Description: shows a progress bar for a datastream\n".
                    "             reads from stdin writes to stdout\n\n";
            exit(1);
    }
             
    
    binmode(STDIN);
    binmode(STDOUT);
    
    $bufsize=1024*100;       # jeweils 100k verarbeiten, es wird aber meistens weniger
                            # angeliefert
    
    $TOTAL_SIZE=$ARGV[0];
    
    $progress = Term::ProgressBar->new ({count => $TOTAL_SIZE,ETA=>linear});
    
    for(    $i=20,  
            $DONE_SIZE=0,
            $time1=time();
    
            sysread STDIN,$buffer,$bufsize;
    
            $i--) {
            $DONE_SIZE+=length($buffer);
            syswrite(STDOUT,$buffer);
            if(!$i) {
                    $i=20;
                    if($time1 != time()) {
                            $progress->update($DONE_SIZE);
                            $time1=time();
                    }
            }
    }
    
    # Damit's schön aussieht: Fortschrittsbalken auf 100% setzen
    $progress->update ($TOTAL_SIZE);
    Das Modul Term::ProgressBar ist glaube ich Standardausstattung wenn nicht, einfach ueber das Internet installieren mit:
    Code:
    perl -MCPAN -e 'install Term::ProgressBar'
    Jetzt kann es verwendet werden z. B. so:
    Code:
    tar -cf -  /pfad | showprogress.pl $(du -sb /pfad) | gzip >/backup.tar.gz
    Ach ja der Fortschrittsbalken wird standardmaessig nach stderr geschrieben. Keine allzu gute Idee ist es auch das Skript für exzessive I/O-Jobs einzusetzen die werden dadurch etwas ausgebremst
    Geändert von fork (28-08-2004 um 21:40 Uhr)

  2. #2
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    Nett. Jetzt muss ich nur noch pipes einbauen

    Jemand hier im Forum hatte irgendwann mal cp & co entsprechend erweitert dass sie immer ne Progressbar anzeigen können - k.A. was daraus geworden ist...

    MfG Peschmä
    The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
    Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)

  3. #3
    Registrierter Benutzer
    Registriert seit
    30.12.2001
    Beiträge
    444
    V1.02 Jetzt noch etwas resourcenschonender...

  4. #4
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    Das Debian-Progressbar-Paket heisst übrigens libterm-progressbar-perl

    MfG Peschmä
    The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
    Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •