74 lines
3.1 KiB
Plaintext
74 lines
3.1 KiB
Plaintext
|
|
Fuser es un comando muy poco conocido pero muy potente en Linux, identifica qué procesos están utilizando un fichero o carpeta determinada o un socket. De la misma forma podemos usarlo para matar esos mismos procesos.
|
|
|
|
--- La forma más simple de utilizarlo sería así:
|
|
m3t4g4m3@nexolinux ~ $ fuser .
|
|
/home/m3t4g4m3: 5663c
|
|
Cuyo PID nos muestra el proceso que muestra que mi propio usuario está usando ese directorio al encontrarme en él:
|
|
m3t4g4m3@nexolinux ~ $ ps -ef | grep 5663
|
|
m3t4g4m3 5663 5655 0 13:30 pts/2 00:00:00 -su
|
|
La «c» del proceso que muestra también nos aporta información, en este caso es «directorio actual» (Current directory)
|
|
También podemos ver esta nomenclatura:
|
|
c Directorio actual (current directory)
|
|
e Ejecutable activo (executable being run)
|
|
f Fichero abierto, omitido en el modo por defecto (open file)
|
|
F Fichero abierto para escritura, omitido en el modo por defecto (open file for writing)
|
|
r Directorio raíz (root directory)
|
|
m Fichero mapeado o biblioteca compartida (maped file or shared library)
|
|
|
|
|
|
--- Si ejecutamos fuser sobre un ejecutable como el servidor web nginx tenemos esto:
|
|
nexolinux sbin # fuser -v nginx
|
|
USER PID ACCESS COMMAND
|
|
/usr/sbin/nginx: root 6444 ...e. nginx
|
|
www-data 6445 ...e. nginx
|
|
www-data 6446 ...e. nginx
|
|
www-data 6447 ...e. nginx
|
|
www-data 6448 ...e. nginx
|
|
|
|
|
|
--- Si lo ejecutamos sobre un socket
|
|
nos dará esta valiosa información. Como por ejemplo en el puerto 80 que arranca el nginx
|
|
nexolinux sbin # fuser -v -n tcp 80
|
|
USER PID ACCESS COMMAND
|
|
80/tcp: root 6444 F.... nginx
|
|
www-data 6445 F.... nginx
|
|
www-data 6446 F.... nginx
|
|
www-data 6447 F.... nginx
|
|
www-data 6448 F.... nginx
|
|
|
|
|
|
--- Matar procesos que de un software determinado:
|
|
nexolinux sbin # ps -ef | grep nginx | grep -v grep
|
|
root 7112 1 0 14:21 ? 00:00:00 nginx: master process ./nginx
|
|
www-data 7113 7112 0 14:21 ? 00:00:00 nginx: worker process
|
|
www-data 7114 7112 0 14:21 ? 00:00:00 nginx: worker process
|
|
www-data 7115 7112 0 14:21 ? 00:00:00 nginx: worker process
|
|
www-data 7116 7112 0 14:21 ? 00:00:00 nginx: worker process
|
|
|
|
nexolinux sbin # fuser -v -k nginx
|
|
USER PID ACCESS COMMAND
|
|
/usr/sbin/nginx: root 7112 ...e. nginx
|
|
www-data 7113 ...e. nginx
|
|
www-data 7114 ...e. nginx
|
|
www-data 7115 ...e. nginx
|
|
www-data 7116 ...e. nginx
|
|
nexolinux sbin # ps -ef | grep nginx | grep -v grep
|
|
nexolinux sbin #
|
|
|
|
|
|
5- Matar procesos selectivos de forma interactiva.
|
|
Pero imaginemos por un momento que una carpeta o binario donde vamos a ejecutarlo pueda ser usado por muchas aplicaciones o directamente lo desconozcamos, como medida de cautela, usamos el argumento «-i» para que nos pregunte si queremos o no matar un proceso determinado:
|
|
nexolinux sbin # fuser -v -i -k nginx
|
|
USER PID ACCESS COMMAND
|
|
/usr/sbin/nginx: root 7291 ...e. nginx
|
|
www-data 7292 ...e. nginx
|
|
www-data 7293 ...e. nginx
|
|
www-data 7294 ...e. nginx
|
|
www-data 7295 ...e. nginx
|
|
Kill process 7291 ? (y/N) y
|
|
Kill process 7292 ? (y/N) y
|
|
Kill process 7293 ? (y/N) y
|
|
Kill process 7294 ? (y/N) y
|
|
Kill process 7295 ? (y/N)
|