Введение
Команда fuser
является утилитой Linux, предназначенной для определения процесса, который использует данный файл, каталог или сокет. Она также предоставляет информацию о пользователе, владеющем этим процессом, и типе доступа.
Как использовать утилиту fuser
Вы можете ознакомиться с страницей руководства по утилите fuser
, чтобы получить обзор всех параметров, используемых с fuser
. Вы также можете запустить fuser
без параметров, чтобы получить обзор синтаксиса 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]]]
Как просмотреть запущенные процессы в каталоге
fuser
также может использоваться с опцией -v, которая запускает утилиту в режиме подробного вывода. Подробный режим используется для получения дополнительного вывода, чтобы пользователь мог наблюдать, что делает fuser
. Запустите fuser
в текущем каталоге, .
, с использованием опции -v
:
- 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, чтобы можно было наблюдать за работающим процессом:
- nc -l -p 8002
Это заблокирует терминал, пока процесс будет активен. В другом окне терминала используйте fuser
, чтобы найти процесс, работающий на TCP порту 8002 с опцией -n
:
- 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
:
- fuser -k 8002/tcp
Output8002/tcp: 18056
Если вы вернетесь обратно к вашему первому терминальному окну, вы заметите, что программа nc
была завершена и вернулась в оболочку.
Утилита fuser также может быть использована для отправки конкретных сигналов процессу. При использовании с опцией -k команда fuser отправляет сигнал KILL процессу. Существует много других сигналов, которые могут быть отправлены определенному запущенному процессу. Вы можете просмотреть их с помощью 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
Заключение
В этой статье вы узнали о некоторых примерах использования fuser
для отслеживания используемых портов и каталогов в системе Linux. fuser
может быть особенно полезен, когда вы пытаетесь понять, какие неизвестные процессы могут работать на вашей системе.
Далее вам может понадобиться изучить, как использовать netstat
и du
для мониторинга других ресурсов сервера.
Source:
https://www.digitalocean.com/community/tutorials/how-to-use-the-linux-fuser-command