Introdução
O comando fuser
é uma utilidade do Linux projetada para encontrar qual processo está utilizando um determinado arquivo, diretório ou soquete. Ele também fornece informações sobre o usuário que está executando esse processo e o tipo de acesso.
Como Usar a Utilidade fuser
Você pode revisar a página do manual do fuser
em man para ter uma visão geral de todas as opções a serem usadas com o fuser
. Você também pode executar o fuser
sem opções para obter uma visão geral da sintaxe do fuser
:
- fuser
OutputNo process specification given
Usage: fuser [-fMuv] [-a|-s] [-4|-6] [-c|-m|-n SPACE] [-k [-i] [-SIGNAL]] NAME...
fuser -l
fuser -V
Show which processes use the named files, sockets, or filesystems.
-a,--all display unused files too
-i,--interactive ask before killing (ignored without -k)
-k,--kill kill processes accessing the named file
-l,--list-signals list available signal names
-m,--mount show all processes using the named filesystems or block device
-M,--ismountpoint fulfill request only if NAME is a mount point
-n,--namespace SPACE search in this name space (file, udp, or tcp)
-s,--silent silent operation
-SIGNAL send this signal instead of SIGKILL
-u,--user display user IDs
-v,--verbose verbose output
-w,--writeonly kill only processes with write access
-V,--version display version information
-4,--ipv4 search IPv4 sockets only
-6,--ipv6 search IPv6 sockets only
- reset options
udp/tcp names: [local_port][,[rmt_host][,[rmt_port]]]
Como Visualizar Processos Executando em um Diretório
O fuser
também pode ser usado com a opção -v, que executa a ferramenta no modo verbose. A opção verbose é usada para produzir mais saída, permitindo que o usuário observe o que o fuser
está fazendo. Execute o fuser
no diretório atual, .
, incluindo a opção -v
:
- fuser -v .
Output USER PID ACCESS COMMAND
/home/sammy: sammy 17604 ..c.. bash
Neste caso, o único processo em execução neste diretório é o shell interativo bash
a partir do qual você está executando comandos neste momento.
Ao ser executado no modo verbose, o utilitário fuser
fornece informações sobre o USUÁRIO
, PID
, ACESSO
e COMANDO
de um processo. O caractere c
sob ACESSO
mostra o tipo de acesso, neste caso, significando o diretório corrente. Existem outros tipos de acesso, como executável sendo executado, diretório raiz, arquivo aberto f ou arquivo mapeado ou biblioteca compartilhada m.
Como Encontrar Processos Usando Sockets de Rede
Talvez você também precise procurar processos usando sockets TCP e UDP. Para demonstrar este exemplo, primeiro você usará o nc
para criar um ouvinte TCP na porta 8002, para que haja um processo em execução que você possa observar:
- nc -l -p 8002
Isso irá bloquear o terminal enquanto estiver em execução. Em outra janela do terminal, use o fuser
para encontrar o processo em execução na porta TCP 8002 com a opção -n
:
- fuser -v -n tcp 8002
Output USER PID ACCESS COMMAND
8002/tcp: sammy 17985 F.... nc
Observação: Por padrão, a ferramenta fuser
verificará tanto os sockets IPv4 quanto IPv6, mas você pode alterar isso com as opções -4
e -6
para verificar apenas as conexões IPv4 ou IPv6, respectivamente.
O resultado mostra que o ID do processo (PID
) do processo usando o netcat é 17985
e o comando usado para iniciá-lo é ‘nc’. O ID do processo (PID) pode ser utilizado de várias maneiras, incluindo para parar ou encerrar um processo em execução. Você pode obter mais informações sobre o gerenciamento de processos lendo Como usar ps, kill e nice para gerenciar processos no Linux. Você também pode usar o próprio fuser
para encerrar processos em execução em portas específicas usando a opção -k
:
- fuser -k 8002/tcp
Output8002/tcp: 18056
Se você retornar à sua primeira janela do terminal, notará que o programa nc
foi encerrado e retornou ao shell.
A utilidade fuser também pode ser usada para enviar sinais específicos a um processo. Quando usado com a opção -k, o comando fuser envia o sinal KILL a um processo. Existem muitos outros sinais que podem ser enviados a um processo em execução. Você pode listar esses sinais com fuser -l
:
- fuser -l
OutputHUP INT QUIT ILL TRAP ABRT BUS FPE KILL USR1 SEGV USR2 PIPE ALRM TERM STKFLT
CHLD CONT STOP TSTP TTIN TTOU URG XCPU XFSZ VTALRM PROF WINCH POLL PWR SYS
Conclusão
Neste artigo, você aprendeu alguns exemplos de uso do fuser
para monitorar portas e diretórios em uso em um sistema Linux. O fuser
pode ser particularmente útil quando você está tentando entender quais processos desconhecidos podem estar em execução no seu sistema.
A seguir, você pode querer aprender a usar netstat
e du
para monitorar outros recursos do servidor.
Source:
https://www.digitalocean.com/community/tutorials/how-to-use-the-linux-fuser-command