Die dd-Funktion scheint einzufrieren, wenn sie abgeschlossen ist

Die dd-Funktion scheint einzufrieren, wenn sie abgeschlossen ist

Ich versuche, mit diesem Befehl ein ISO auf einen USB-Stick zu kopieren:

sudo dd bs=4M if=lubuntu-17.04-desktop-amd64.iso of=/dev/sdc status=progress 

Was ganz einfach ist. Das ISO ist 912 MB groß. Warum friert der Ausgabetext hier ein, anstatt das Programm zu beenden?

956301312 bytes (956 MB, 912 MiB) copied, 11.216 s, 85.3 MB/s

Ich kann nicht einmal die Ausführung des Programms stoppen ctr-c.

Antwort1

Das Verhalten, das Sie sehen, ist nur dddas Synchronisieren der Daten auf der Festplatte nach dem Vorgang. Um IO-Vorgänge zu optimieren, liest Linux Daten oft in größeren Blöcken als angefordert (Read-Ahead) und verzögert Schreibvorgänge, damit sie kombiniert werden können (Dirty Cache). Am Ende des Vorgangs wird entweder dddie Datei auf der Festplatte synchronisiert oder der Kernel tut dies implizit und der Prozess bleibt aktiv, bis alle Schreibvorgänge abgeschlossen sind.

Wenn auf dem Computer keine anderen umfangreichen E/A-Vorgänge stattfinden, sollten Sie anhand des „Dirty:“-Werts abschätzen können, wie viele Daten noch zu schreiben sind /proc/meminfo. Dabei handelt es sich um die Gesamtmenge der Daten, die noch auf die Festplatte geschrieben werden müssen.

Die Datenmenge, die das System zu einem bestimmten Zeitpunkt ungeschrieben im Speicher lassen kann, kann mit den folgenden Sysctl-Einstellknöpfen gesteuert werden. Standardmäßig werden nur die Verhältnisse verwendet. Sie können den Wert in Prozent (Verhältnis) oder Bytes angeben.

vm.dirty_background_ratio
vm.dirty_ratio
vm.dirty_background_bytes
vm.dirty_bytes

Die offizielle Dokumentation zu diesen Parametern finden Sie hier:

https://www.kernel.org/doc/Documentation/sysctl/vm.txt

verwandte Informationen