Saya mencoba menghapus file di Linux menggunakan rm -rf file_name, tetapi mendapat kesalahan:
rm: file_name not removed. Text file busy
Bagaimana cara mengetahui proses mana yang menggunakan file ini?
Jawaban:
Anda dapat menggunakan fuserperintah, seperti:
fuser file_name
Anda akan menerima daftar proses yang menggunakan file tersebut.
Anda dapat menggunakan flag yang berbeda dengannya, untuk menerima keluaran yang lebih detail.
Anda dapat menemukan info lebih lanjut di artikel Wikipedia fuser , atau di manhalaman.
fuserimplementasi sama, atau bekerja dengan cara yang sama. Meskipun -iditentukan dalam POSIX, implementasi tertentu yang Anda gunakan tidak selalu memiliki opsi yang sama seperti yang dijelaskan di artikel Wikipedia. Misalnya, saya menggunakan AIX sekarang, dan yang fusertersedia di sistem ini juga tidak memiliki -iopsi.
fusertidak lsofbekerja untuk saya di tamu kotak virtual. Jawaban ini menyelamatkan saya.
Jawaban @ jim benar - fuserapa yang Anda inginkan.
Selain itu (atau sebagai alternatif), Anda dapat menggunakan lsofuntuk mendapatkan lebih banyak informasi termasuk nama pengguna, jika Anda memerlukan izin (tanpa harus menjalankan perintah tambahan) untuk menghentikan proses. (Meskipun tentu saja, jika Anda ingin menghentikan proses, Anda fuserdapat melakukannya dengan -kopsi ini. Anda dapat fusermenggunakan sinyal lain dengan -sopsi - periksa halaman manual untuk detailnya.)
Misalnya, dengan tail -F /etc/passwdmenjalankan dalam satu jendela:
ghoti@pc:~$ lsof | grep passwd
tail 12470 ghoti 3r REG 251,0 2037 51515911 /etc/passwd
Perhatikan bahwa Anda juga dapat menggunakan lsofuntuk mengetahui proses apa yang menggunakan soket tertentu. Alat yang sangat baik untuk dimiliki di gudang senjata Anda.
lsof | head -1untuk melihat semua header.
lsof | grep -E "PID|<your_process_name>"menampilkan baris pertama dan proses yang ingin Anda kueri.
treemembaca sesuatu dari stdin? Jika ya, apa hubungannya dengan masukan itu?
tree, bukan lsof. Sejauh yang saya mengerti, treetidak membaca dari input standar, oleh karena itu output lsofakan dibuang saat Anda menjalankan lsof | tree .... Jika itu benar, maka lsof | tree MyFoldsama dengan tree MyFold, yang hanya menampilkan isinya tetapi tidak file mana yang dibuka oleh suatu proses.