dd: '/ dev / null' yazma: Cihazda boşluk kalmadı


9

/ Dev / null içine 550MB dosya okuyorum ve alıyorum

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

Şaşırmıştım. Ben / dev / null düşündüğünüz gibi bir kara delik olduğunu düşündüm (çünkü onun sanal bir fs).

Evet, bu hatayı aldığımda diskim neredeyse dolu. Diskten içerik silmek dışında ne yapabilirim?

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

Onun yerine

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

Komut kullanıyorum:

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

3
çıktısını sağlayabilirls -l /dev/null
Patrick

@Patrick ekledi ls -l
Ankur Agarwal

1
Yürüttüğünüz dd komutunu da kopyalayabilir / yapıştırabilir misiniz?
forcefsck

2
Bu gerçekten garip. Yazmak /dev/nullbu hatayı asla tetiklememelidir, çünkü aslında hiçbir şey yazmaz. Aynı efekti olmadan timemı elde edersiniz ? Çıktısını gönderilmesi için lütfen strace dd if=$filename of=/dev/null(a ile bunu hiçbir gizli bilgileri içeren dosyanın ), ya da strace dd if=$filename of=/dev/nulleğer timeihtiyaç vardır hataya neden.
Gilles 'SO- kötü olmayı bırak

1
@Gilles Sorun benim / dev / null karakter özel bir dosya değildi. Yukarıdaki sorumu güncelledim.
Ankur Agarwal

Yanıtlar:


17

/dev/nullkarakter aygıtı türünde özel bir dosyadır. Bu karakter aygıtının sürücüsü, aygıta yazmaya çalıştığınız her şeyi yok sayar ve yazma işlemleri her zaman başarılı olur. Bir yazma işlemi /dev/nullbaşarısız olursa, bir şekilde uygun olanı kaldırmayı /dev/nullve normal bir dosyayla değiştirmeyi başardığınız anlamına gelir . Yanlışlıkla kaldırmış olabilirsiniz /dev/null; sonra bir sonraki … >/dev/nulldosyayı normal bir dosya olarak yeniden yaratırdı.

Koşun ls -l /dev/nullve çizginin benzediğini kontrol edin

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

Şununla başlamalıdır crw-rw-rw-: cbir karakter cihazı ve herkesin okumasına ve yazmasına izin veren izinler için. Çok önemli olmasa da, dosyanın köküne sahip olması gerekir. Cihaz sahibi ve gruptan sonraki iki sayı cihazı tanımlar ( ana ve ikincil cihaz numarası ). Yukarıda Linux altında değerleri gösteriyorum; farklı unix varyantlarının farklı değerleri vardır. Tarih genellikle sistemin kurulduğu tarih veya son yeniden başlatma tarihidir ve önemli değildir.

Dosyayı yeniden oluşturmanız gerekirse, bazı sistemler MAKEDEVkök PATH veya içinde bir commmand sağlar /dev. Çalıştırmak cd /dev; ./MAKEDEV stdveya bunun gibi bir şey gibi standart temel cihazları yeniden oluşturmak /dev/null. Veya doğru cihaz numaralarını sağlayarak cihazı manuel olarak oluşturun; Linux'ta, bu

mknod -m 666 /dev/null c 1 3

1
Vaov! sen bir hayat kurtarıcısın. Teşekkürler, bu gerçekten yardımcı oluyor. Hiç null sildim ama orada değildi, bir tane oluşturdum.
Fr0zenFyr

1
@ Fr0zenFyr Muhtemelen /dev/nullbazı durumlarda kaldırılan bir komut dosyası var , belki de tmp_file=$(mktemp); … … … if [ "$mode" = "quiet" ]; then tmp_file=/dev/null; done; … … … rm "$tmp_file"
Gilles

Komut dosyalarımı kontrol etmem gerekecek, eğer bu doğruysa, null değerinin tekrar silinme şansı var. Bu durumu bulamazsam (çözemezsem) geri geleceğim. Söylediğin için teşekkürler. Alkış !! :)
Fr0zenFyr
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.