Як використовувати команду Fuser у Linux

Як використовувати команду Fuser у Linux

Команда fuser є потужним інструментом у Linux, який дозволяє переглядати та керувати процесами, що використовують файли або каталоги. Вона надзвичайно корисна для діагностики проблем із доступом до файлів, звільнення ресурсів, які тримають у відкритому стані інші процеси, та багато іншого. У цій статті ми розглянемо, як використовувати команду fuser для різних цілей і отримання розуміння її можливостей.

Вступ

Команда fuser – це універсальний засіб, який дозволяє отримувати інформацію про процеси, що використовують певні файли або каталоги. Вона може використовуватися як у інтерактивному режимі, так і в сценаріях оболонки, надаючи гнучкість у автоматизації таких дій, як виявлення процесів із тривалим перебігом, звільнення заблокованих файлів і діагностика проблем із доступом до ресурсів. Вона також може використовуватися для надсилання сигналів процесам, що використовують зазначені файли або каталоги.

Огляд синтаксису

Синтаксис команди fuser наступний:


fuser [опції] [файли або каталоги]

де:

* опції: це необов’язкові прапорці, які модифікують поведінку команди fuser.
* файли або каталоги: це один або кілька файлів або каталогів, які будуть перевірені на наявність процесів, які їх використовують.

Нижче наведено деякі з основних опцій, які використовуються з командою fuser:

* -v: Виводить додаткову інформацію, включаючи ідентифікатори процесів (PID) та імена команд.
* -f: Замість виведення на стандартний вивід результати записуються у файл.
* -k: Надсилає сигнал (за замовчуванням SIGKILL) усім процесам, що використовують зазначені файли або каталоги.
* -i: Покращує інформацію з помилки, коли файли або каталоги не знайдено.
* -m: Виводить лише PID процесів, що використовують файли або каталоги.

Перегляд процесів, що використовують файл або каталог

Найпоширенішим використанням команди fuser є перегляд процесів, що використовують певний файл або каталог. Це можна зробити, просто ввівши шлях до файлу або каталогу:


fuser /home/user/file.txt

Це виведе список усіх процесів, що використовують /home/user/file.txt. Результат виглядатиме приблизно так:


/home/user/file.txt: 1234 1235 1236

У цьому прикладі процеси з PID 1234, 1235 і 1236 використовують /home/user/file.txt.

Фільтрування за типом процесу

Команда fuser також дозволяє фільтрувати процеси за їхнім типом. Це можна зробити за допомогою опції -u. Наприклад, щоб переглянути лише процеси, якими володіє конкретний користувач, можна використовувати таке:


fuser -u myusername /home/user/file.txt

Це виведе список лише процесів, що використовують /home/user/file.txt і належать користувачу myusername.

Звільнення заблокованих файлів

Одним із потужних застосувань команди fuser є можливість звільнення заблокованих файлів. Це корисно у ситуаціях, коли процес застряг або неправильно функціонує, що призводить до блокування файлу, не дозволяючи іншим процесам отримати до нього доступ. Для звільнення заблокованого файлу можна використовувати опцію -k:


fuser -k /home/user/file.txt

Це надішле сигнал SIGKILL усім процесам, що використовують /home/user/file.txt, змушуючи їх звільнити файл. Варто бути обережним при використанні цієї опції, оскільки вона може призвести до втрати даних, якщо процес, що використовує файл, не встиг правильно завершити свою роботу.

Надсилання сигналів процесам

Команда fuser також може використовуватися для надсилання сигналів процесам, що використовують зазначені файли або каталоги. це можна зробити за допомогою опції -s. Наприклад, щоб надіслати сигнал SIGTERM усім процесам, що використовують /home/user/file.txt, можна використовувати таке:


fuser -s TERM /home/user/file.txt

У цьому прикладі сигнал SIGTERM буде надіслано процесам з PID 1234, 1235 і 1236, які використовують /home/user/file.txt. Це може бути корисно для запитів на завершення роботи процесів, що застрягли або неправильно функціонують.

Висновок

Команда fuser є потужним і універсальним інструментом, який дозволяє отримувати інформацію про процеси, що використовують файли або каталоги, і керувати ними. Він знаходить застосування при діагностиці проблем із доступом до файлів, звільненні заблокованих файлів, надсилання сигналів процесам і багато іншого. Розуміння того, як використовувати команду fuser, може значно підвищити ефективність вашої роботи з Linux, дозволяючи вам ефективно керувати ресурсами та забезпечувати безперебійну роботу ваших систем. Наведений вище огляд має надати вам міцну основу для використання цього потужного інструменту в різних сценаріях.

Часті запитання

1. Як переглянути лише PID процесів, що використовують файл або каталог?


fuser -m /home/user/file.txt

2. Як надіслати користувацькому сигналу всім процесам, що використовують файл або каталог?


fuser -s USR1 /home/user/file.txt

3. Як вивести додаткову інформацію про процеси, що використовують файл або каталог?


fuser -v /home/user/file.txt

4. Що робити, якщо команда fuser повертає помилку “Файл або каталог не знайдено”?

Переконайтеся, що шлях до файлу або каталогу правильний, і що вони існують. Ви також можете використовувати опцію -i, щоб отримати додаткову інформацію про помилку.

5. Чи можна використовувати команду fuser для звільнення заблокованого каталогу?

Так, можна звільнити заблокований каталог, використовуючи опцію -k, так само, як і для звільнення файлів.

6. Як переглянути процеси, що використовують файл або каталог як кореневий користувач?


sudo fuser /home/user/file.txt

7. Які типи сигналів можна надсилати процесам за допомогою fuser?

Команда fuser дозволяє надсилати будь-який сигнал, визначений у файлі заголовка /usr/include/sys/signal.h. Зазвичай використованими сигналами є SIGTERM, SIGKILL і USR1.

8. Чи можна використовувати команду fuser у сценаріях оболонки?

Так, команду fuser можна використовувати у сценаріях оболонки для автоматизації таких завдань, як виявлення процесів із тривалим перебігом і звільнення заблокованих файлів.