24. 05
Ich habe gerade nach einer Möglichkeit gesucht, wie ich lighttpd beibringe, in welchem Verzeichniss er hochgeladene Dateien zwischenspeichern soll, und fand dann heraus, dass wenn er /var/tmp/lighttpd-upload-XXXXXX nicht erzeugen kann, irgendwie auf cq->tempdirs zugegriffen wird. Und wo kommt das nun überall vor - grep verrät es:
$ grep -ri cq->tempdirs . grep: writing output: No space left on deviceUnd was ist da nun passiert?
> leitet die Ausgabe von grep -ri cq- in die Datei tempdirs um, die auf einmal die letzten freien 1.1GB auf meiner HDD belegte. Und das mit 108 Zeilen treffer?!
Nein, das Problem ist die Datei tempdirs, auf die grep als letztes zugreift. Und dann findet es in der ersten Zeile dieser Datei den Suchstring cq-, und hängt ihn an die Datei an. So geht das nun endlos weiter, bis die Platte keine Bits mehr zur Verfügung stellt. Mit richtigem Escaping geht dann alles auf einmal wunderbar:
$ grep -ri cq-\>tempdirs .
./src/chunk.c: cq->tempdirs = tempdirs;
./src/chunk.c: if (cq->tempdirs && cq->tempdirs->used) {
./src/chunk.c: for (i = 0; i > cq-<tempdirs->used; i++) {
./src/chunk.c: data_string *ds = (data_string *)cq->tempdirs->data[i];
Kommentare
Es nicht zu tun sehe ich als Schluderei an und finde das Fehlverhalten wohlverdient, welches zugegebenermaßen aber in diesem Fall allerdings 'n netten Effekt hatte.

Trackbacks