FUSER(1) | Команди користувача | FUSER(1) |
fuser — програма для ідентифікації процесів на основі файлів або сокетів
fuser [-fuv] [-a|-s]
[-4|-6] [-c|-m|-n
простір]
[ -k [-i] [-M] [-w]
[-СИГНАЛ] ]
назва ...
fuser -l
fuser -V
fuser виводить дані щодо PID процесів на основі вказаних файлів або файлових систем. У типовому режимі показу після кожної назви файла буде вказано літеру, яка вказуватиме на тип доступу:
fuser повертає ненульовий код, якщо програмі не вдається отримати доступ до жодного з вказаних файлів або якщо трапиться критична помилка. Якщо вдасться отримати доступ хоча б до одного з файлів, fuser повертає нуль.
З метою пошуку процесів з використанням сокетів TCP та UDP слід вибрати відповідний простір назв за допомогою параметра -n. Типово, fuser шукатиме серед сокетів IPv6 та IPv4. Щоб змінити типову поведінку, скористайтеся параметром -4 або -6. Сокети можна задати за локальним або віддаленим портом та віддалено адресою. Усі поля є необов'язковим, але коми перед пропущеними полями слід ставити:
[lcl_port][,[rmt_host][,[rmt_port]]]
Для IP-адрес та номерів портів можна використовувати символічні або числові значення.
fuser виводить до стандартного виведення лише PID, усі інші дані буде надіслано до stderr.
Процеси, які отримують доступ до того самого файла бо файлової системи декілька разів, буде показано як один запис.
Якщо той самий об'єкт у рядку команди вказано декілька разів, деякі із записів об'єкта може бути проігноровано.
Якщо fuser запущено від імені звичайного користувача, програма зможе отримати доступ лише до частини даних. Наслідком цього є те, що файли, які відкрито процесами інших користувачів, можуть не потрапити до списку, а виконувані файли може бути класифіковано як такі, що лише пов'язані із файлом.
fuser не зможе включити до звіту дані жодного з тих процесів, доступ до таблиці дескрипторів файлів яких обмежено правами доступу. Найчастіше подібна проблема виникає, якщо виконується обробка сокетів TCP або UDP від імені користувача, який не має прав доступу адміністратора (root). У таких випадках fuser повідомить про те, що не має доступу до потрібних програмі даних.
Встановлення для fuser SUID root може запобігти проблемам із доступом до даних, але є небажаним із міркувань безпеки та конфіденційності.
Пошук для просторів назв udp та tcp, а також сокетів доменів UNIX не можна виконувати, якщо ядро системи має версію, яка є старішою за 1.3.78.
Доступи ядра буде показано, лише якщо використано параметр -v.
Параметр -k працює лише для процесів. Якщо користувачем є kernel, fuser виведе повідомлення-пораду, але не виконуватиме ніяких дій щодо завершення роботи процесу.
fuser не бачитиме блокові пристрої, які змонтовано процесами у інших просторах назв монтування. Причиною є те, що ідентифікатор пристрою, який показано у таблиці дескрипторів файлів процесу, належить до простору назв процесу, а не простору назв fuser; тобто він не збігається з потрібним.
fuser -m /dev/sgX покаже (або завершить роботу, якщо було вказано параметр -k) усі процеси, навіть якщо пристрій не налаштовано. Можуть бути і інші пристрої, для яких така команда теж працюватиме.
Якщо буде вказано параметр монтування -m, програма працюватиме із усіма файлами на пристрої, які за назвою збігатимуться зі вказаним файлом. Скористайтеся додатковим параметром -M, якщо вам потрібні дані лише для самої точки монтування.
Для fuser не буде встановлено відповідності для пов'язаних файлів, зокрема спільних бібліотек процесу, якщо вони зберігаються у файловій системі btrfs(5) через відмінність у ідентифікаторах пристроїв між stat(2) і /proc/<PID>/maps.
kill(1), killall(1), stat(2), btrfs(5), lsof(8), mount_namespaces(7), pkill(1), ps(1), kill(2).
2 листопада 2022 року | psmisc |