| FUSER(1) | Пользовательские команды | FUSER(1) |
fuser - ищет процессы, использующие указанные файлы или сокеты
fuser [-fuv] [-a|-s]
[-4|-6] [-c|-m|-n
ОБЛАСТЬ]
[ -k [-i] [-M] [-w]
[-СИГНАЛ] ]
ИМЯ …
fuser -l
fuser -V
fuser выводит PID процессов, которые используют заданные файлы или файловые системы. В режиме показа по умолчанию к каждому PID добавляется буква, обозначающая тип доступа:
fuser возвращает ненулевой код выхода, если ни к одному из указанных файлов никто не обращается или возникла критическая ошибка. Если найден хотя бы один доступ, то fuser возвращает ноль.
Чтобы найти процессы, использующие сокеты TCP и UDP нужно в параметре -n указать соответствующую область имён. По умолчанию fuser просматривает сокеты IPv6 и IPv4. Чтобы изменить поведение по умолчанию укажите параметр -4 и -6. Сокеты можно задавать по локальному и удалённому порту и удалённому адресу. Все поля необязательны, но должны указываться запятые их разделяющие:
[локальный_порт][,[удалённый_узел][,[удалённый_порт]]]
Для IP-адресов и портов можно использовать символьные или числовые значения.
fuser выводит в stdout только PID-ы , всё остальное отправляется в stderr.
Процессы, обращающиеся к одному файлу или файловой системе несколько раз одним и тем же способом, выводятся однократно.
Если в командной строке один объект указывается несколько раз, то некоторые из этих элементов могут игнорироваться.
fuser может собирать некоторую информацию только имея дополнительные права. В частности, открытые процессами файлы, принадлежащие другим пользователям, могут не появиться, а исполняемые файлы могут быть отнесены только к отображённым.
fuser не может сообщить о процессах, если не имеет прав поиска в таблице файловых дескрипторов. Чаще всего эта проблема возникает при поиске сокетов TCP или UDP в случае, если fuser запускается без прав пользователя root. В этом случае fuser сообщит, что нет доступа.
Установка fuser как SUID root решит проблему доступа к определённой информации, но может быть нежелательна при соблюдении безопасности и конфиденциальности.
Области имён udp, tcp и доменные сокеты UNIX не опрашиваются, если используются ядра старее версии 1.3.78.
Обращения ядра показываются только с параметром -v.
Параметр -k применим только для процессов. Если пользователем является ядро, то fuser выводит только совет и ничего не делает.
fuser не видит блочные устройства, смонтированные процессами в других пространствах имён монтирования. Это происходит из-за того, что ID устройства в таблице файловых дескрипторов процесса берётся из пространства имён процесса, а не fuser и они не совпадают.
fuser -m /dev/sgX покажет (или завершит, если указан -k) все процессы, даже если у вас нет этого настроенного устройства. Также, для этого могут быть другие устройства.
При параметре монтирования -m найдутся все файлы на том же устройстве, что и указанный файл, дополнительно укажите параметр -M, если вы подразумевали только точку монтирования.
fuser will not match mapped files, such as a process' shared libraries if they are on a btrfs(5) filesystem due to the device IDs being different for stat(2) and /proc/<PID>/maps.
kill(1), killall(1), stat(2), btrfs(5), lsof(8), mount_namespaces(7), pkill(1), ps(1), kill(2).
| 2022-11-02 | psmisc |