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 fusercomando, 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 manpáginas.
fuserimplementaciones sean iguales o funcionen de la misma manera. Incluso si -iestá 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 fuserdisponible en este sistema tampoco tiene la -iopción.
fuserni lsofestaban trabajando para mí en un invitado de virtualbox. Esta respuesta me salvó.
La respuesta de @ jim es correcta, fuseres lo que quieres.
Además (o alternativamente), puede usar lsofpara 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, fuserpuede hacerlo con su -kopción. Puede fuserusar otras señales con la -sopción; consulte la página del manual para obtener más detalles).
Por ejemplo, con una tail -F /etc/passwdejecució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 lsofpara averiguar qué procesos utilizan sockets particulares. Una excelente herramienta para tener en tu arsenal.
lsof | head -1para ver todos los encabezados.
lsof | grep -E "PID|<your_process_name>"muestra tanto la primera línea como el proceso que desea consultar.
treeLee algo de stdin? Si es así, ¿qué hace con esa entrada?
tree, no lsof. Por lo que tengo entendido, treeno lee de la entrada estándar, por lo tanto, la salida de lsofse descarta cuando ejecuta lsof | tree .... Si eso es correcto, entonces lsof | tree MyFoldes lo mismo que tree MyFold, que solo muestra el contenido, pero no qué archivos abre algún proceso.