Как использовать команду Linux Fuser

Введение

Команда fuser является утилитой Linux, предназначенной для определения процесса, который использует данный файл, каталог или сокет. Она также предоставляет информацию о пользователе, владеющем этим процессом, и типе доступа.

Как использовать утилиту fuser

Вы можете ознакомиться с страницей руководства по утилите fuser, чтобы получить обзор всех параметров, используемых с fuser. Вы также можете запустить fuser без параметров, чтобы получить обзор синтаксиса fuser:

  1. fuser
Output
No 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]]]

Как просмотреть запущенные процессы в каталоге

fuser также может использоваться с опцией -v, которая запускает утилиту в режиме подробного вывода. Подробный режим используется для получения дополнительного вывода, чтобы пользователь мог наблюдать, что делает fuser. Запустите fuser в текущем каталоге, ., с использованием опции -v:

  1. fuser -v .
Output
USER PID ACCESS COMMAND /home/sammy: sammy 17604 ..c.. bash

В данном случае единственным процессом, работающим в этом каталоге, является интерактивная оболочка bash, из которой вы сейчас выполняете команды.

При запуске в режиме подробного вывода утилита fuser предоставляет информацию о USER, PID, ACCESS и COMMAND процесса. Символ c под ACCESS указывает на тип доступа, в данном случае – текущий каталог. Существуют и другие типы доступа, такие как eксируемый файл, rутовый каталог, открытый fайл и mаппированный файл или общая библиотека.

Как найти процессы, использующие сетевые сокеты

Вам также может понадобиться найти процессы, использующие TCP и UDP сокеты. Чтобы продемонстрировать этот пример, сначала используйте nc, чтобы создать TCP слушатель на порту 8002, чтобы можно было наблюдать за работающим процессом:

  1. nc -l -p 8002

Это заблокирует терминал, пока процесс будет активен. В другом окне терминала используйте fuser, чтобы найти процесс, работающий на TCP порту 8002 с опцией -n:

  1. fuser -v -n tcp 8002
Output
USER PID ACCESS COMMAND 8002/tcp: sammy 17985 F.... nc

Примечание: По умолчанию утилита fuser проверяет как IPv4, так и IPv6 сокеты, но вы можете изменить это с помощью опций -4 и -6, чтобы проверить только соединения IPv4 или IPv6, соответственно.

Этот вывод показывает, что идентификатор процесса (PID) процесса, использующего netcat, равен 17985, а команда, которая была использована для его запуска, – ‘nc’. Идентификатор процесса (PID) можно использовать по-разному, включая остановку или завершение работы запущенного процесса. Вы можете узнать больше о управлении процессами, прочитав Как использовать ps, kill и nice для управления процессами в Linux. Также вы можете использовать сам fuser для завершения процессов, работающих на определенных портах, используя флаг -k:

  1. fuser -k 8002/tcp
Output
8002/tcp: 18056

Если вы вернетесь обратно к вашему первому терминальному окну, вы заметите, что программа nc была завершена и вернулась в оболочку.

Утилита fuser также может быть использована для отправки конкретных сигналов процессу. При использовании с опцией -k команда fuser отправляет сигнал KILL процессу. Существует много других сигналов, которые могут быть отправлены определенному запущенному процессу. Вы можете просмотреть их с помощью fuser -l:

  1. fuser -l
Output
HUP 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

Заключение

В этой статье вы узнали о некоторых примерах использования fuser для отслеживания используемых портов и каталогов в системе Linux. fuser может быть особенно полезен, когда вы пытаетесь понять, какие неизвестные процессы могут работать на вашей системе.

Далее вам может понадобиться изучить, как использовать netstat и du для мониторинга других ресурсов сервера.

Source:
https://www.digitalocean.com/community/tutorials/how-to-use-the-linux-fuser-command