FUSER(1) | Команди користувача | FUSER(1) |
НАЗВА
fuser — програма для ідентифікації процесів на основі файлів або сокетів
КОРОТКИЙ ОПИС
fuser [-fuv] [-a|-s]
[-4|-6] [-c|-m|-n
простір]
[ -k [-i] [-M] [-w]
[-СИГНАЛ] ]
назва ...
fuser -l
fuser -V
ОПИС
fuser виводить дані щодо PID процесів на основі вказаних файлів або файлових систем. У типовому режимі показу після кожної назви файла буде вказано літеру, яка вказуватиме на тип доступу:
- c
- поточний каталог.
- e
- виконуваний файл, який запускається.
- f
- відкрити файл. f буде пропущено у типовому режимі показу.
- F
- відкрити файл для запису. F буде пропущено у типовому режимі показу.
- r
- Кореневий каталог.
- m
- пов'язаний mmap файл або бібліотека спільного використання.
- .
- Замінник, буде пропущено у типовому режимі показу.
fuser повертає ненульовий код, якщо програмі не вдається отримати доступ до жодного з вказаних файлів або якщо трапиться критична помилка. Якщо вдасться отримати доступ хоча б до одного з файлів, fuser повертає нуль.
З метою пошуку процесів з використанням сокетів TCP та UDP слід вибрати відповідний простір назв за допомогою параметра -n. Типово, fuser шукатиме серед сокетів IPv6 та IPv4. Щоб змінити типову поведінку, скористайтеся параметром -4 або -6. Сокети можна задати за локальним або віддаленим портом та віддалено адресою. Усі поля є необов'язковим, але коми перед пропущеними полями слід ставити:
[lcl_port][,[rmt_host][,[rmt_port]]]
Для IP-адрес та номерів портів можна використовувати символічні або числові значення.
fuser виводить до стандартного виведення лише PID, усі інші дані буде надіслано до stderr.
ПАРАМЕТРИ
- -a, --all
- Показати усі файли, які вказано у рядку команди. Типово, буде показано лише файли, доступ до яких має принаймні один процес.
- -c
- Те саме, що і параметр -m, використовується для сумісності з POSIX.
- -f
- Буде проігноровано. Використовується для сумісності з POSIX.
- -k, --kill
- Завершити роботу процесів, які мають доступ до файла. Якщо не було внесено змін до назви сигналу за допомогою параметра -СИГНАЛ, буде надіслано сигнал SIGKILL. Процес fuser не може завершити свою роботу, але може завершити роботу іншого процесу fuser. Значення реального ідентифікатора користувача процесу, у якому виконується fuser, буде встановлено відповідно до справжнього ідентифікатор до того, як програма спробує перервати роботу іншої програми.
- -i, --interactive
- Запитати користувача щодо підтвердження дії до завершення роботи процесу. Цей параметр буде проігноровано, якщо не вказано параметр -k.
- -I, --inode
- Для простору назв file використовувати порівняння на основі inode вказаних файлів, а не назв файлів, навіть у мережевих файлових системах.
- -l, --list-signals
- Вивести список усіх відомих назв сигналів.
- -m НАЗВА, --mount НАЗВА
- НАЗВА визначає файл на змонтованій файловій системі або блоковий пристрій, який змонтовано. Буде виведено список усіх процесів, які отримали доступ до файлів на цій файловій системі. Якщо вказано каталог, назву буде автоматично замінено на НАЗВА/, і програма скористається будь-якою файловою системою, яку може бути змонтовано до цього каталогу.
- -M, --ismountpoint
- Запит буде виконано, лише якщо НАЗВА вказує на точку монтування. Це чудовий пасок безпеки, який не дасть вам завершити роботу віртуальної машини, якщо НАЗВА, раптом, не вказуватиме на файлову систему.
- -w
- Завершити роботу лише процесів, які мають доступ до запису. Цей параметр буде проігноровано, якщо не вказано параметр -k.
- -n ПРОСТІР_НАЗВ, --namespace ПРОСТІР_НАЗВ
- Вибрати інший простір назв. Передбачено підтримку просторів назв file (назви файлів, типовий), udp (локальні порти UDP) та tcp (локальні порти TCP). Порти можна вказувати за допомогою символічної назви або номеру порту. Якщо немає неоднозначностей, можна користуватися скороченою формою запису: назва/простір (наприклад 80/tcp).
- -s, --silent
- Виконати дію без сповіщень щодо виконання. У цьому режимі параметри -u та -v буде проігноровано. -a не слід використовувати разом із -s.
- -СИГНАЛ
- Використовувати вказаний сигнал замість SIGKILL для завершення роботи процесів. Сигнали можна вказувати або за назвою (наприклад -HUP), або за номером (наприклад -1). Цей параметр буде проігноровано, якщо не використано параметр -k.
- -u, --user
- Дописувати ім'я користувача-власника процесу до кожного PID.
- -v, --verbose
- Режим докладних повідомлень. Процеси буде показано у стилі ps. Значення вмісту полів PID, USER та COMMAND є тим самим, що і у ps. У полі ACCESS буде показано спосіб доступу процесу до файла. У докладному режимі також буде показано, чи виконано доступ до певного файла як до точки доступу, експортованих даних knfs або файла резервної пам'яті. У цьому випадку замість PID буде показано запис kernel.
- -V, --version
- Показати інформацію щодо версії.
- -4, --ipv4
- Шукати серед сокетів IPv4. Цей параметр не слід використовувати разом із параметром -6. Він працює лише для просторів назв tcp та udp.
- -6, --ipv6
- Шукати серед сокетів IPv6. Цей параметр не слід використовувати разом із параметром -4. Він працює лише для просторів назв tcp та udp.
ФАЙЛИ
- /proc
- розташування файлової системи процесів
ПРИКЛАДИ
- fuser -km /home
- завершує роботу усіх процесів, які у будь-який спосіб мають доступ до файлової системи /home.
- if fuser -s /dev/ttyS1; then :; else команда; fi
- викликає команду, якщо жоден інший процес не використовує /dev/ttyS1.
- fuser telnet/tcp
- виводить список усіх процесів на (локальному) порту TELNET.
ОБМЕЖЕННЯ
Процеси, які отримують доступ до того самого файла бо файлової системи декілька разів, буде показано як один запис.
Якщо той самий об'єкт у рядку команди вказано декілька разів, деякі із записів об'єкта може бути проігноровано.
Якщо 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 |