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, якщо вам
потрібні
дані лише
для самої
точки
монтування.
kill(1),
killall(1),
lsof(8),
mount_namespaces(7),
pkill(1),
ps(1),
kill(2).