Introdução
O comando fuser
é uma utilidade do Linux projetada para encontrar qual processo está usando 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 de manual do fuser
para ter uma visão geral de todas as opções para usar com o fuser
. Você também pode executar o fuser
por si só sem nenhuma opção 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 para que o usuário possa observar o que o fuser
está fazendo. Execute o fuser
no diretório atual, .
, enquanto inclui 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
do qual você está executando comandos agora.
Ao executar no modo verboso, 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 em execução, diretório raiz, arquivo aberto file, e arquivo mapeado ou biblioteca compartilhada.
Como Encontrar Processos Usando Sockets de Rede
Você também pode precisar procurar processos usando sockets TCP e UDP. Para demonstrar este exemplo, primeiro use 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 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
Nota: 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 conexões IPv4 ou IPv6, respectivamente.
Esta saída mostra que o ID do processo (PID
) do processo que está 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 aprender mais 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ê voltar à 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 usada com a opção -k, o comando fuser envia o sinal KILL para 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.
Em seguida, você pode querer aprender como usar netstat
e du
para monitorar outros recursos do servidor.
Source:
https://www.digitalocean.com/community/tutorials/how-to-use-the-linux-fuser-command