Поиск по сайту:

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


Введение

Команда 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, который запускает инструмент в подробном режиме. Опция verbose используется для получения большего объема вывода, чтобы пользователь мог наблюдать, что делает fuser. Запустите fuser в текущем каталоге ., включив параметр -v:

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

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

При запуске в подробном режиме утилита fuser предоставляет информацию о USER, PID, ДОСТУП и КОМАНДА процесса. Символ c под ACCESS показывает тип доступа, в данном случае означающий текущий каталог. Существуют и другие типы доступа, такие как исполняемый файл, корневой каталог, открытый файл и сопоставленный файл или общая библиотека.

Как найти процессы с помощью сетевых сокетов

Вам также может понадобиться искать процессы, использующие сокеты 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) можно использовать по-разному, в том числе для остановки или уничтожения запущенного процесса. Вы можете узнать больше об управлении процессами, прочитав How To Use 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 для мониторинга других ресурсов сервера.