Jawaban:
Tidak terlalu. File sudah dibuka oleh program. Menghapus file (dan kemudian menggantinya dengan versi lain) tidak mempengaruhi program yang sedang berjalan karena file asli disimpan terbuka (meskipun tanpa nama pada disk untuk membukanya lagi) sampai program selesai dengan itu. Hanya ketika semua menangani file ditutup blok data pada disk dirilis. Sampai saat itu file terbuka dapat dibaca dan ditulis seperti biasa - satu-satunya perubahan adalah tidak ada orang lain yang dapat membukanya karena namanya telah dihapus.
Sementara sebagian dari program mungkin sudah dibaca menjadi ram ketika dihapus, mereka mungkin masih dibuang dan dibaca kembali nanti, atau bagian-bagian baru dari program yang sebelumnya tidak pernah dieksekusi masih dapat diambil dari file yang dihapus.
rm -rf /
bekerja .....
rm -rf /
tidak akan berfungsi jika Anda mencoba menjalankannya untuk kedua kalinya segera setelah itu;)
lsof
output, dan saya tahu seperti itulah bentuk file 'zombie' ... tetapi apakah ada cara untuk menyimpan konten file seperti itu agar tidak hilang? ketika pegangan file terakhir mati?
root
mungkin dapat membuat nama untuk itu (dan dengan demikian mencegah penghapusan) dengan menggunakan linkat
system call. Tetapi executable dan library dipetakan dalam memori, yang tidak memerlukan file handle. Saya tidak tahu cara untuk menangani file yang hanya ada karena memori dipetakan. Meskipun executable dapat diakses melalui /proc
saat mereka sedang berjalan, jadi itu hanya perpustakaan dan file memetakan memori lainnya yang mungkin berada di luar pemulihan. Jika Anda ingin detail lebih lanjut tentang itu, Anda harus menanyakannya sebagai pertanyaan terpisah.
Apakah
xterm
proses di-cache dalam RAM saat sedang berjalan?
Persis. Ini mirip dengan proses yang memungkinkan Anda untuk menginstal pembaruan untuk hal-hal saat mereka sedang berjalan tanpa mereka crash. Dan juga mengapa Anda harus memulai kembali layanan setelah Anda memperbaruinya. Setelah sesuatu berjalan, binernya ada di memori.
Jika itu tergantung pada file lain (yang tidak dalam keadaan "terbuka" ditahan) yang dihapus atau diganti, yang mungkin menyebabkan masalah tetapi untuk sesuatu yang terpisah xterm
, itu bukan masalah.
Ini sebenarnya adalah fitur bagaimana komputer bekerja: Ketika suatu program dipanggil itu memang dimuat ke dalam memori dan itu bekerja dari sana.
File sebenarnya bekerja dengan cara yang sama. Untuk menghindari masalah, banyak file di sistem UNIX-ish membuat kunci.
Teka-teki yang sebenarnya adalah mengapa Anda tidak bisa melakukan hal-hal yang serupa di Windows.
Fitur ini sebenarnya yang memungkinkan Anda untuk memperbarui seluruh sistem, termasuk program yang aktif di sistem Anda. ;)
apt-get
adalah menghapusxterm
, dan tidak tahu bahwa itu entah bagaimana tergantung pada suatuxterm
proses - jadi ini tentang "Mengapa xterm dapat dihapus saat menjalankan?". Pertanyaan yang bagus