dd: writing '/ dev / null': nessuno spazio lasciato sul dispositivo


9

Sto leggendo un file da 550 MB in / dev / null e sto ottenendo

dd: writing '/dev/null': No space left on device

Ero sorpreso. Ho pensato / dev / null è un buco nero dove puoi inviare tutto ciò che vuoi (perché è un fs virtuale).

Sì, il mio disco è quasi pieno quando ricevo questo errore. Cosa posso fare oltre all'eliminazione del contenuto dal disco?

 ls -l /dev/null
 -rw-r--r--    1 root     root             0 July 7 21:58 /dev/null

Invece di

 crw-rw-rw-    1 root     root        1,   3 July 7 02:58 /dev/null

Comando che sto usando:

time sh -c "dd if=$filename of=/dev/null"

3
potete fornire l'output dils -l /dev/null
Patrick

@Patrick ha aggiunto ls -l
Ankur Agarwal il

1
Potresti anche copiare / incollare il comando dd che stai eseguendo?
forcefsck

2
Questo è davvero strano. Scrivere su /dev/nullnon dovrebbe mai innescare questo errore, dal momento che in realtà non scrive nulla da nessuna parte. Ottieni lo stesso effetto senza time? Si prega di pubblicare l'output di strace dd if=$filename of=/dev/null(farlo con un file che non contiene informazioni riservate ) o di strace dd if=$filename of=/dev/nullse timeè necessario per attivare l'errore.
Gilles 'SO- smetti di essere malvagio' il

1
@Gilles Il problema era che il mio / dev / null non era un file speciale di carattere. Ho aggiornato la mia domanda sopra.
Ankur Agarwal,

Risposte:


17

/dev/nullè un file speciale, di tipo carattere dispositivo. Il driver per quel dispositivo personaggio ignora tutto ciò che si tenta di scrivere sul dispositivo e le scritture hanno sempre successo. Se una scrittura /dev/nullfallisce, significa che in qualche modo sei riuscito a rimuovere il corretto /dev/nulle sostituirlo con un file normale. Potresti aver rimosso accidentalmente /dev/null; quindi il prossimo lo … >/dev/nullavrebbe ricreato come un normale file.

Esegui ls -l /dev/nulle controlla che la linea sia simile

crw-rw-rw- 1 root root 1, 3 Sep 13  2011 /dev/null

Deve iniziare con crw-rw-rw-: cper un dispositivo a caratteri e autorizzazioni che consentono a tutti di leggere e scrivere. Il file dovrebbe essere di proprietà di root, sebbene non sia molto importante. I due numeri dopo il proprietario e il gruppo identificano il dispositivo ( numero di dispositivo principale e secondario ). Sopra mostro i valori sotto Linux; diverse varianti unix hanno valori diversi. La data è in genere la data di installazione del sistema o la data dell'ultimo riavvio e non importa.

Se è necessario ricreare il file, alcuni sistemi forniscono MAKEDEVcomandi, nel PATH di root o in /dev. Esegui cd /dev; ./MAKEDEV stdo qualcosa del genere per ricreare i dispositivi di base standard come /dev/null. Oppure crea il dispositivo manualmente, fornendo i numeri di dispositivo corretti; su Linux, questo è

mknod -m 666 /dev/null c 1 3

1
Wow! sei un salvavita. Grazie, aiuta davvero. Non ho mai cancellato null ma non c'era, ne ho creato uno manualmente.
Fr0zenFir

1
@ Fr0zenFyr Probabilmente hai uno script in esecuzione come root che rimuove /dev/nullin alcune circostanze, forse qualcosa del generetmp_file=$(mktemp); … … … if [ "$mode" = "quiet" ]; then tmp_file=/dev/null; done; … … … rm "$tmp_file"
smetti di essere malvagio '24

Dovrò controllare i miei script quindi, se questo è vero, c'è la possibilità che null venga nuovamente eliminato. Tornerò se non riesco a individuare (risolvere) questa situazione. Grazie per il testa a testa. Saluti!! :)
Fr0zenFyr
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.