Czytam plik 550 MB do / dev / null i otrzymuję
dd: writing '/dev/null': No space left on device
Byłem zaskoczony. Myślałem, że / dev / null to czarna dziura, w której możesz wysłać tyle, ile chcesz (ponieważ jest to wirtualny fs).
Tak, mój dysk jest prawie pełny, gdy pojawia się ten błąd. Co mogę zrobić poza usunięciem zawartości z dysku?
ls -l /dev/null
-rw-r--r-- 1 root root 0 July 7 21:58 /dev/null
Zamiast
crw-rw-rw- 1 root root 1, 3 July 7 02:58 /dev/null
Polecenie, którego używam:
time sh -c "dd if=$filename of=/dev/null"
ls -l /dev/null
/dev/null
nigdy nie powinno wyzwalać tego błędu, ponieważ tak naprawdę nigdzie nie pisze. Czy uzyskasz ten sam efekt beztime
? Opublikuj wynik działaniastrace dd if=$filename of=/dev/null
(zrób to z plikiem niezawierającym poufnych informacji ) lubstrace dd if=$filename of=/dev/null
jeślitime
jest to konieczne do wyzwolenia błędu.Odpowiedzi:
/dev/null
to specjalny plik typu urządzenie znakowe. Sterownik tego urządzenia znakowego ignoruje wszystko, co próbujesz zapisać na urządzeniu, a zapisy zawsze kończą się powodzeniem. Jeśli zapis do/dev/null
nie powiedzie się, oznacza to, że udało ci się jakoś usunąć właściwy/dev/null
i zastąpić go zwykłym plikiem. Być może przypadkowo usunąłeś/dev/null
; następnie następny… >/dev/null
odtworzyłby go jako zwykły plik.Uruchom
ls -l /dev/null
i sprawdź, czy linia wygląda jakośMusi zaczynać się od
crw-rw-rw-
:c
urządzenia postaci i uprawnień, które pozwalają wszystkim czytać i pisać. Plik powinien należeć do roota, choć nie jest to bardzo ważne. Dwie cyfry po właścicielu i grupie identyfikują urządzenie ( główny i podrzędny numer urządzenia ). Powyżej pokazuję wartości pod Linuksem; różne warianty uniksowe mają różne wartości. Data jest zazwyczaj datą instalacji systemu lub datą ostatniego uruchomienia i nie ma znaczenia.Jeśli konieczne jest ponowne utworzenie pliku, niektóre systemy udostępniają polecenia w
MAKEDEV
ścieżce roota lub w folderze/dev
. Uruchomcd /dev; ./MAKEDEV std
lub coś takiego, aby odtworzyć standardowe podstawowe urządzenia, takie jak/dev/null
. Lub utwórz urządzenie ręcznie, podając prawidłowe numery urządzeń; w Linuksie, to jestźródło
/dev/null
w niektórych okolicznościach, być może coś w stylutmp_file=$(mktemp); … … … if [ "$mode" = "quiet" ]; then tmp_file=/dev/null; done; … … … rm "$tmp_file"