Regional-de archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: Wie löscht /dev/null



Hallo allerseits,

On Mon, Apr 27, 2009 at 12:21:45PM +0200, Thomas Kaepernick wrote:
> Am Montag, den 27.04.2009, 08:36 +0200 schrieb Ignatios Souvatzis:
> > On Fri, Apr 24, 2009 at 05:10:31PM +0200, Martin Wittwer wrote:
> > 
> > > Was passiert denn genau, wenn ich eine Datei nach /dev/null verschiebe?
> > > Ist das das gleiche als wenn ich die Datei mit dem Befehl rm lösche?
> > 
> > Nein.
> > 
> > Das ist (fast) das gleiche, als wenn du /dev/null mit rm löschtst und
> > die Datei /dev/null nennst.
> > 
> > Sprich: du bekommst jede Menge Probleme, weil viele Anwendungen sich
> > darauf verlassen, dass sie aus /dev/null nur die leere Datei lesen
> > können und keinen Plattenplatz brauchen, wenn sie dahin schreiben.
> > 
> Das war aber nicht die Frage von Martin Witte. Er wollte nicht /dev/null
> löschen, sondern ihn interessiert der Unterschied zwischen dem Löschen
> einer beliebigen Datei mit rm oder durch verschieben nach /dev/null.

Ja. Und ich habe erklärt, was verschieben (engl. to move, Unix-kommando
mv, system call rename()) tut.

> Soweit ich weiß wird mit rm nur der inode-Eintrag gelöscht. Der Inhalt
> der Datei ist zunächst noch auf dem Speichermedium (z.B. Festplatte) und
> könnte daher wieder (mit entsprechenden Tools) hergestellt/ausgelesen
> werden werden.

Richtig. Wenn die Datei mehrere (Hard-)Links besäße, könntest du sogar
ohne Tricks über einen anderen auf diese Datei zugreifen.

> Wenn du etwas nach /dev/null schreiben läßt,

-- was Martin Witte nicht schrieb; er schrieb "die Datei nach /dev/null
verschieben --

> wird es -
> bildlich gesprochen - hinter dem Tellerrand im Nichts fallen gelassen.

richtig.

> Es werden Daten, also Inhalte von Dateien dorthin geschrieben, der
> inode-Eintrag der Datei wird nicht angefaßt.

Doch, die access-time... aber sonst hast du natürlich recht.

> Es ist andererseits möglich etwas Nichts über den Tellerrand
> in eine Datei zu ziehen. Diese wird dann mit Nullen gefüllt.

Du meinst /dev/zero . /dev/null gibt dir nur eine Dateiendebedingung.
Schreibend sind beide gleich.

Aber das ist alles eine Beschreibung, was z.B. bei cat bzw. cp passiert.

Verschieben (mv) hingegen macht (jedenfalls innerhalb eines
Dateisystems) drei Dinge gleichzeitig:

1. alten Directory-Eintrag der Zieldatei loeschen
2. alten Directory-Eintrag der Quelldatei loeschen
3. neuen Directory-Eintrag fuer den Inode der Quelldatei mit dem
   Namen der Zieldatei erzeugen.

So Martin mit "verschieben" etwas anderes gemeint hat als Verschieben,
möge er es bitte schreiben, und sich die korrekte Nomenklatur
angewöhnen.

Tschoe
        -is


Home | Main Index | Thread Index | Old Index