Das gesamte Ausgabegerät wird gelöscht, unabhängig davon, ob seine Größe ein Vielfaches der Blockgröße ist, an die Sie übergeben, ddoder nicht.
Das notruncFlag hat keine Auswirkung, wenn die Ausgabe eine Gerätedatei ist, da das Abschneiden einer Gerätedatei keine Auswirkung hat. Wenn die Ausgabe eine reguläre Datei wäre, hätte dies zur Folge, dass die Ausgabedatei vor dem Schreiben nicht abgeschnitten wird, was bei einigen Dateisystemen bedeutet, dass die alten Daten überschrieben werden (im Gegensatz zum Schreiben neuer Datenblöcke und dem Verbleib des Restes). Dies wäre jedoch nicht nützlich, da diese Eigenschaft nicht von allen Dateisystemen garantiert wird und der Befehl außerdem nicht nur die Datei überschreibt, sondern auch so lange schreibt, bis die Ausgabediskette gefüllt ist (oder ein anderer Fehler auftritt).
Anstatt zu verwenden ddund sich Gedanken darüber zu machen, ob Sie es richtig verwenden (wie es passiert, funktioniert es in diesem speziellen Fall, aber es ist kompliziert und funktioniert manchmal nicht ), verwenden Sie einfachcat .
cat /dev/zero >/dev/sdX
Trotz der weit verbreiteten Meinung im Web gibt es absolut keine Magie dd, die es irgendwie besser geeignet macht, auf eine Festplatte zu schreiben. Die Magie liegt in den /devAkten. Jedes Tool, das mit Binärdaten umgehen kann, wie z. B. ein modernes catoder head, kann den gleichen Job ddausführen, es sei denn, Sie übergeben Flags wie seekoder skip.
Beachten Sie, dass ein von ddund gemeinsam genutztes Problem darin catbesteht, dass bei erfolgreichem Betrieb der Fehler "Kein Speicherplatz mehr auf dem Gerät" (ENOSPC) auftritt. Wenn Sie dies in ein Skript einfügen, müssen Sie entweder überprüfen, ob der Fehler ENOSPC ist, oder eine andere Methode verwenden. Eine zuverlässigere Methode besteht darin, zuerst die Größe des Geräts zu bestimmen (z. B. /proc/partitionsunter Linux) und dann mit einem Tool wie z. B. genau die richtige Anzahl von Bytes zu schreiben head.
size=$(</proc/partitions awk '$4 == "sdX" {print $3}')
head -c "${size}k" /dev/zero >/dev/sdX