Intenté eliminar un archivo en Linux usando rm -rf file_name
, pero obtuve el error:
rm: file_name not removed. Text file busy
¿Cómo puedo saber qué proceso está utilizando este archivo?
Respuestas:
Puede usar el fuser
comando, como:
fuser file_name
Recibirá una lista de procesos que utilizan el archivo.
Puede usar diferentes banderas con él para recibir una salida más detallada.
Puede encontrar más información en el artículo de Wikipedia del fusor o en las man
páginas.
fuser
implementaciones sean iguales o funcionen de la misma manera. Incluso si -i
está definido en POSIX, la implementación particular que está utilizando no tiene necesariamente las mismas opciones que las descritas en el artículo de Wikipedia. Por ejemplo, estoy usando AIX en este momento, y el fuser
disponible en este sistema tampoco tiene la -i
opción.
fuser
ni lsof
estaban trabajando para mí en un invitado de virtualbox. Esta respuesta me salvó.
La respuesta de @ jim es correcta, fuser
es lo que quieres.
Además (o alternativamente), puede usar lsof
para obtener más información, incluido el nombre de usuario, en caso de que necesite permiso (sin tener que ejecutar un comando adicional) para finalizar el proceso. (Aunque, por supuesto, si lo que desea es matar el proceso, fuser
puede hacerlo con su -k
opción. Puede fuser
usar otras señales con la -s
opción; consulte la página del manual para obtener más detalles).
Por ejemplo, con una tail -F /etc/passwd
ejecución en una ventana:
ghoti@pc:~$ lsof | grep passwd
tail 12470 ghoti 3r REG 251,0 2037 51515911 /etc/passwd
Tenga en cuenta que también puede utilizar lsof
para averiguar qué procesos utilizan sockets particulares. Una excelente herramienta para tener en tu arsenal.
lsof | head -1
para ver todos los encabezados.
lsof | grep -E "PID|<your_process_name>"
muestra tanto la primera línea como el proceso que desea consultar.
tree
Lee algo de stdin? Si es así, ¿qué hace con esa entrada?
tree
, no lsof
. Por lo que tengo entendido, tree
no lee de la entrada estándar, por lo tanto, la salida de lsof
se descarta cuando ejecuta lsof | tree ...
. Si eso es correcto, entonces lsof | tree MyFold
es lo mismo que tree MyFold
, que solo muestra el contenido, pero no qué archivos abre algún proceso.