Saya membaca file 550MB ke / dev / null dan saya mulai
dd: writing '/dev/null': No space left on device
Saya terkejut. Saya pikir / dev / null adalah lubang hitam di mana Anda dapat mengirim sebanyak yang Anda inginkan (karena ini adalah fs virtual).
Ya, disk saya hampir penuh ketika saya mendapatkan kesalahan ini. Apa yang bisa saya lakukan selain menghapus konten dari disk?
ls -l /dev/null
-rw-r--r-- 1 root root 0 July 7 21:58 /dev/null
Dari pada
crw-rw-rw- 1 root root 1, 3 July 7 02:58 /dev/null
Perintah yang saya gunakan:
time sh -c "dd if=$filename of=/dev/null"
ls -l /dev/null
/dev/null
seharusnya tidak pernah memicu kesalahan ini, karena itu sebenarnya tidak menulis apa pun di mana pun. Apakah Anda mendapatkan efek yang sama tanpatime
? Silakan kirim output daristrace dd if=$filename of=/dev/null
(lakukan dengan file yang tidak mengandung informasi rahasia ), ataustrace dd if=$filename of=/dev/null
jikatime
diperlukan untuk memicu kesalahan.Jawaban:
/dev/null
adalah file khusus, tipe perangkat karakter. Pengemudi untuk perangkat karakter tersebut mengabaikan apa pun yang Anda coba tulis ke perangkat dan penulisan selalu berhasil. Jika/dev/null
gagal menulis , artinya Anda entah bagaimana berhasil menghapus yang benar/dev/null
dan menggantinya dengan file biasa. Anda mungkin telah dihapus secara tidak sengaja/dev/null
; maka yang berikutnya… >/dev/null
akan dibuat ulang sebagai file biasa.Jalankan
ls -l /dev/null
dan periksa apakah garisnya terlihat sepertiItu harus dimulai dengan
crw-rw-rw-
:c
untuk perangkat karakter, dan izin yang memungkinkan semua orang untuk membaca dan menulis. File harus dimiliki oleh root, meskipun itu tidak terlalu penting. Dua angka setelah pemilik dan grup mengidentifikasi perangkat (nomor perangkat utama dan kecil ). Di atas saya menunjukkan nilai-nilai di Linux; varian unix yang berbeda memiliki nilai yang berbeda. Tanggal ini biasanya tanggal ketika sistem diinstal atau tanggal reboot terakhir dan tidak masalah.Jika Anda perlu membuat ulang file, beberapa sistem menyediakan perintah
MAKEDEV
, baik di PATH root atau di/dev
. Jalankancd /dev; ./MAKEDEV std
atau sesuatu seperti ini untuk membuat ulang perangkat dasar standar seperti/dev/null
. Atau buat perangkat secara manual, dengan menyediakan nomor perangkat yang benar; di Linux, itusumber
/dev/null
dalam beberapa keadaan, mungkin sesuatu sepertitmp_file=$(mktemp); … … … if [ "$mode" = "quiet" ]; then tmp_file=/dev/null; done; … … … rm "$tmp_file"