printf jede Sekunde

Bash, Shell, PHP, Python, Perl, CGI
microhome
Posts: 120
Joined: 2004-04-04 21:24

printf jede Sekunde

Post by microhome » 2006-01-09 02:35

Morgen ihr Lieben,
ich hab folgendes Script:

Code: Select all

do_copy(){
sfdisk -d /dev/sda > /tmp/sda.table
sfdisk  /dev/sdb < /tmp/sda.table
}
do_copy >& /dev/null
Dieser Vorgang dauert einige Sekunden. Nun möchte ich, dass jede Sekunde per printf ein Punkt . geschrieben wird damit der User sieht dass da was geschieht. Wie mache ich das? Ich weiß nicht wo ich die while-Schleife hinbauen soll.

captaincrunch
Userprojekt
Userprojekt
Posts: 7225
Joined: 2002-10-09 14:30
Location: Dorsten

Re: printf jede Sekunde

Post by captaincrunch » 2006-01-09 08:44

Dein Vorhaben müsstest du entweder dadurch lösen, dass du beide Prozesse (sfdisk und printf) parallel ablaufen lässt, was allerdings doch recht schwierig werden könnte,
Streng genommen müsstest du diese Aufgabe dem sfdisk-Binary überlassen.
DebianHowTo
echo "[q]sa[ln0=aln256%Pln256/snlbx]sb729901041524823122snlbxq"|dc

microhome
Posts: 120
Joined: 2004-04-04 21:24

Re: printf jede Sekunde

Post by microhome » 2006-01-09 17:04

Hmm und wie mach ich das? Ich hab mal versucht do_copy >& /dev/null einfach in den Hintergrund zu legen, aber das scheint nicht so ganz zu funzen.. Wie kann man die parallele Abfolge anders bewerkstelligen?

oxygen
RSAC
Posts: 2179
Joined: 2002-12-15 00:10
Location: Bergheim

Re: printf jede Sekunde

Post by oxygen » 2006-01-09 17:42

Naja du musst halt einen kleinen Prozess forken der den . ausgibt, dass sollte eigentlich kein Ding sein. Zumindest in C nicht.

braindead
RSAC
Posts: 257
Joined: 2002-10-22 09:49
Location: vorm Rechner

Re: printf jede Sekunde

Post by braindead » 2006-01-09 18:31

also ich würde so tun ;)

Code: Select all

while (true); do echo -n ". "; sleep 1; done &
export dots=$!

<hier dein code>

kill $dots

microhome
Posts: 120
Joined: 2004-04-04 21:24

Re: printf jede Sekunde

Post by microhome » 2006-01-09 19:02

Naja, hab jetzt einfach die erste Funktion in den BG geschoben und die Punkte-Funktion solange ausgeführt, bis der BG-Prozess fertig ist (test -e)