Archiv verlassen und diese Seite im Standarddesign anzeigen : dd Fortschritt anzeigen lassen
blubbersuelze
06.05.12, 21:49
Hallo,
ich habe einen dd-Befehl wie folgt ausgeführt und in den Hintergrund geschoben.
dd if=/dev/sda of=/dev/sdb &
Nun würde ich gerne herausfinden wie weit dd ist.
Ich habe folgendes probiert:
kill -USR1 <processid von dd>
ebenso
killall -USR1 <processid von dd>
aber keiner dieser Befehle gibt mir irgend etwas zurück.
Wo liegt der Fehler, bzw. wie könnte ich alternativ an Fortschrittsdaten kommen?
mfg.
blubbersuelze :p
kill -USR1 `pidof dd`funktioniert hier. Die Ausgabe erfolgt in dem Terminal, in dem das dd läuft, nicht in dem, in dem das kill abgesetzt wurde.
Kreol
Iluminat23
06.05.12, 22:11
der kill befehl gibt dir auch nix zurück, sondern der dd-prozess bekommt dasd signal und unterbricht kurzzeitig das kopieren und gibt den akteullen status aus.
achja, killall will den namen des prozesses haben nicht die prozessid.
folgendes funktioniert hier ohne probleme:
$ dd if=/dev/urandom of=/dev/null &
[1] 11145
$ kill -USR1 11145
$ 264922+0 records in
264921+0 records out
135639552 bytes (136 MB) copied, 9,82997 s, 13,8 MB/s
Gruß
iluminat23
blubbersuelze
07.05.12, 17:27
Danke für die Antworten,
Aber wie mache ich das wenn man dd gestartet hat, in den Hintergrund geschoben hat und dann die Shell geschlossen hat und dann eine andere Shell wieder öffnet um den Status zu erfragen?
Gibt es da eine Möglichkeit die Anzeige des Status auch zu bekommen?
DAS ist nämlich das Problem.
mfg.
blubbersuelze :p
Wenn Du die shell schliesst, in der das dd läuft, stirbt dd doch mit, weil der Elternprozess fehlt.
Deswegen ja wohl das bg (&), damit Du im gleichen Terminal das kill absetzen kannst. Ich mache das allerdings meistens mit einem weiteren Terminal und ohne das bg.
Kreol
blubbersuelze
07.05.12, 17:43
*grmpf*
also nochmal von vorne und zusammen gefasst:
ich habe einen dd-Befehl wie folgt ausgeführt und in den Hintergrund geschoben.
dd if=/dev/sda of=/dev/sdb &
Anschließend Shell geschlossen !!
Nun würde ich gerne herausfinden wie weit dd ist.
Also Shell auf gemacht und:
kill -USR1 <processid von dd>
ebenso
killall -USR1 <processid von dd>
aber keine Statusrückmeldung ...
also WIE bekomme ich die Statusanzeige trotzdem angezeigt?
mfg.
blubbersuelze :p
Nochmal zusammengefasst: Wenn Du die Shell, in der dd läuft, beendest, beendest Du auch das dd. Dann gibt es keinen Fortschritt mehr, da es kein dd mehr gibt...
P.S.
Und iluminat23 hat bereits darauf hingewiesen: killall erwartet die Bezeichnung des Prozesses, nicht die PID. Das hat mit Deinem Problem aber nichts zu tun, s.o.. kill oder killall findet kein dd mehr, da es nicht mehr läuft...
P.P.S.
Prüf das doch mal mit `pidof dd` oder ps aux | grep dd, ob ein dd nach dem Beenden der Muttershell noch läuft.
Kreol
blubbersuelze
07.05.12, 17:52
Falsch .. dd gibt es noch .. in der Backgroundshell ...
wenn man es wie ich es beschrieben habe starte ..
aber der Aussage entnehme ich das ich nach Schließung der Shell keine Statusanzeige mehr bekommen kann .. zumindest nicht auf direktem Wege ...
Hier nicht. Wenn ich dd mit & starte liefert eine 2. shell mir die PID (mit pidof oder ps aux). Beende ich die Shell vom dd ist auch das dd weg.
Eben gerade ausprobiert...
Kreol
Du suchst evtl. "pv".
dd if=/dev/sda | pv -f 2>dd.log | dd of=/dev/sdb
An die dd.log kannst Du Dich jederzeit mit
tail -f dd.log
dranhängen.
blubbersuelze
07.05.12, 18:09
ah Danke @Aqualung...
endlich mal was sinnvolles an Aussage.
Werde das in Zukunft dann wohl so machen müssen, das ich an den Status komme.
mfg.
blubbersuelze :p
Oder dd in einem Screen laufen lassen
screen -dmS name dd if=/dev/urandom of=/dev/null
kill -USR1 $(pidof dd)
screen -r name
Mit 'Strg-a' und danach 'd' verlässt man den Screen wieder. -S name ist nur nötig bzw. komfortabler, wenn mehrere Screens laufen.
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.