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 fuser
perintah, 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 man
halaman.
fuser
implementasi sama, atau bekerja dengan cara yang sama. Meskipun -i
ditentukan 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 fuser
tersedia di sistem ini juga tidak memiliki -i
opsi.
fuser
tidak lsof
bekerja untuk saya di tamu kotak virtual. Jawaban ini menyelamatkan saya.
Jawaban @ jim benar - fuser
apa yang Anda inginkan.
Selain itu (atau sebagai alternatif), Anda dapat menggunakan lsof
untuk 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 fuser
dapat melakukannya dengan -k
opsi ini. Anda dapat fuser
menggunakan sinyal lain dengan -s
opsi - periksa halaman manual untuk detailnya.)
Misalnya, dengan tail -F /etc/passwd
menjalankan 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 lsof
untuk mengetahui proses apa yang menggunakan soket tertentu. Alat yang sangat baik untuk dimiliki di gudang senjata Anda.
lsof | head -1
untuk melihat semua header.
lsof | grep -E "PID|<your_process_name>"
menampilkan baris pertama dan proses yang ingin Anda kueri.
tree
membaca sesuatu dari stdin? Jika ya, apa hubungannya dengan masukan itu?
tree
, bukan lsof
. Sejauh yang saya mengerti, tree
tidak membaca dari input standar, oleh karena itu output lsof
akan dibuang saat Anda menjalankan lsof | tree ...
. Jika itu benar, maka lsof | tree MyFold
sama dengan tree MyFold
, yang hanya menampilkan isinya tetapi tidak file mana yang dibuka oleh suatu proses.