Apa yang terjadi jika Anda menghapus file perangkat?

21

Saya kira-kira tahu tentang file yang terletak di bawah / dev.

Saya tahu ada dua jenis (karakter / blok), mengakses file-file ini berkomunikasi dengan driver di kernel.

Saya ingin tahu apa yang terjadi jika saya menghapus satu - khusus untuk kedua jenis file. Jika saya menghapus file perangkat blok, katakan /dev/sda, apa efeknya - jika ada - apakah ini? Apakah saya baru saja melepas disk?

Demikian pula, bagaimana jika saya menghapus /dev/mouse/mouse0- apa yang terjadi? Apakah mouse berhenti bekerja? Apakah itu secara otomatis mengganti sendiri?

Bisakah saya menghapus file-file ini? Jika saya memiliki VM yang diatur, saya akan mencobanya.

alfa
sumber
1
Saya menghapus / dev / nol pada sistem SVR4 sekali. Ide buruk. Butuh sedikit usaha untuk membuat sistem saya bootable lagi.
Brad Lanam

Jawaban:

30

Itu hanya file (khusus). Mereka hanya berfungsi sebagai "pointer" ke perangkat yang sebenarnya. (yaitu modul driver di dalam kernel.)

Jika beberapa perintah / layanan sudah membuka file itu, sudah ada pegangan untuk perangkat dan akan terus berfungsi.

Jika beberapa perintah / layanan mencoba membuka koneksi baru, ia akan mencoba mengakses file itu dan gagal karena "file tidak ditemukan".

Biasanya file-file tersebut diisi oleh udev, yang secara otomatis membuatnya pada startup sistem dan pada acara-acara khusus seperti mencolokkan perangkat USB, tetapi Anda juga bisa secara manual membuatnya menggunakan mknod.

michas
sumber
3
Ini tidak benar-benar menjawab pertanyaan ...
Gogeta70
"Biasanya file-file itu diisi oleh udev" Biasanya, tetapi di Linux. Ada makedevperintah yang biasanya melakukan pekerjaan, dan tidak seperti udevitu tampaknya hadir di antara os yang paling mirip unix.
Sergiy Kolodyazhnyy
1
@ Gogeta70 bagian mana dari pertanyaan yang tidak dijawab tulisan ini?
Ruslan
@RonJohn Pertanyaannya ditandai linuxdanudev
Michael Mrozek
1
@ RonJohn Ya, tetapi dengan "tetapi". Buku Ubuntu Hacks yang berasal dari seperti '06 menunjukkan ada /etc/init.d/makedev. The pengguna freebsd menyebutkan MAKEDEV muncul di 4.2BSD (dari tahun 1983). Saya pikir pada tahun 1983 akan sama logisnya untuk membuat MAKEDEVotomatis via init seperti pada 06
Sergiy Kolodyazhnyy
8

File perangkat sebenarnya adalah alias sistem file untuk entri dalam tabel perangkat kernel. Jika Anda melihat file / dev dengan "ls-l" Anda akan melihat mereka memiliki nomor perangkat utama dan nomor perangkat kecil. Jika Anda menghapus file dari sistem file, Anda selalu dapat membuatnya kembali menggunakan alat yang sesuai untuk menghubungkan kembali file khusus ke entri dalam tabel perangkat kernel - lihat mknod (1).

Stephen M. Webb
sumber
3

Sejak saat itu, mereka hanya dapat diakses oleh program yang perangkatnya sudah terbuka. Jadi, tidak ada cara untuk melepas sistem file. Dan dengan udev, reboot mungkin mengembalikan perangkat tersebut. Cara aneh untuk belajar unix.

Gerard H. Pille
sumber