Як використовувати і максимально використовувати команду fuser у Linux

Як використовувати і максимально використовувати команду fuser у Linux

Припустимо, вам дано завдання ідентифікувати процеси, які використовують певний файл, а потім вбивають їх по черзі - все це потрібно зробити з командного рядка. Що б ти зробив? Ну, якщо ви новачок для командного рядка, я впевнений, що ти будеш бездоганний, запитавши про допомогу.

Але командні профілі, можливо, матимуть уявлення, що в Linux існує утиліта командного рядка, яка дозволяє визначати процеси на основі файлів (або каталогів або сокетів), до яких вони отримують доступ. Не тільки це, інструмент також дозволяє вам вбити ці процеси, тому вам не потрібно використовувати вбивати or killall команди окремо. Утиліта командного рядка, про яку ми говоримо, є термофіксатор.

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

Але перш ніж ми рухаємося вперед, будь ласка, майте на увазі, що всі приклади, команди та інструкції, згадані в цьому посібнику, були протестовані на Ubuntu 16.04 LTS, а термофіксатор Командна версія, яку ми використали, - 22.21.

Linux fuser command

повне г, повне г,, показали, від, номер, XNUMX термофіксатор команда - як я вже згадував вище - використовується, перш за все, для ідентифікації процесів за допомогою файлів, каталогів або сокетів. Інструмент в основному відображає PID процесів, які використовують файл, ім'я якого передано як аргумент команди.

Ось термофіксатор командування в дії в самому основному вигляді:

команда fuser

Як видно з наведеного вище знімка екрана, ми спробували використовувати термофіксатор щоб дізнатися, які процеси використовують / home / heanshu каталог, а команда - на своєму виході - створює список ідентифікаторів процесу. Поки що так добре, але тут є кілька проблем.

По-перше, що таке "c" додається до кожного PID? Швидкий погляд на команду людина сторінка показує, що в режимі відображення за замовчуванням термофіксатор команда не тільки відображає PID процесів, що мають доступ до файлу або каталогу, але і відображає тип доступу.

Кожен тип доступу позначається літерою:

  • c - поточний каталог.
  • e - виконуваний файл запускається.
  • f - відкритий файл. f не використовується в режимі дисплея за замовчуванням.
  • F - відкрити файл для написання. F не використовується в режимі дисплея за замовчуванням.
  • r - кореневий каталог.
  • m - mmap'ed файл або розділена бібліотека.

Тепер, повернувшись до прикладу, який ми обговорювали, буква "c" у виведенні вказує на те, що весь процес, чиї PID перераховані у вихідному файлі, мають доступ до / home / heanshu каталог як їх поточний каталог.

Пам'ятайте, що процес може мати кілька типів доступу для файлу або каталогу. Наприклад, наступний вивід показує, що до каталогу root (/) доступні багато процесів, як їх поточний, так і кореневий каталог.

Результат термофіксатора / команди

До цього часу термофіксатор Висновок, який ми бачимо, містить лише ідентифікатори процесу, і це не більше того. Чи не буде краще, якщо будуть відображені імена процесів? Ну, для цього вам потрібно скористатись -v параметр командного рядка. Нижче наведено приклад:

Параметр Fuser -v

Переміщення, щоб додати ім'я користувача власника процесу для кожного PID, використовуйте -u параметр командного рядка. Ось приклад цього:

Команда Fuser -vu опція

Примітка. Якщо файл або каталог, на якому знаходиться запитання, розташовано на встановленій файловій системі або на блочному пристрої, то використовуйте -m параметр командного рядка. "Всі процеси, що мають доступ до файлів у цій файловій системі, перераховані", - сказано на сторінці man. "Якщо файл каталогу вказано, він автоматично змінюється на NAME /. використовувати будь-яку файлову систему, яка може бути встановлена ​​в цьому каталозі ".

Як вбити процеси за допомогою фьюзера

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

Отже, ось запущений виконуваний файл:

Вбити процес з термофіксатором

І ось це термофіксатор команда, яка в ідеалі повинна вбити процес, ініційований тест-фьюзер виконуваний файл

fuser -v -k test-fuser

О, перед тим як я йти вперед і виконати цю команду, дозвольте мені сказати вам, що -k Командний рядок оповідає термофіксатор щоб убити процес (або процеси), використовуючи файл або каталог.

Ось що сталося, коли було виконано вищезазначену команду:

Результат вбивства процесу з термофіксатором

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

розширений приклад фьюзера

Нижче наведено кілька важливих деталей, пов'язаних з термофіксатором, які слід знати при використанні параметра -k:

  • За допомогою команди -k команда fuser надсилає сигнал SIGKILL за замовчуванням. Але ви можете змінити цю поведінку, використовуючи опцію -SIGNAL.
  • Процес фьюжер ніколи не вбиває себе, але може вбити інші процеси фьюзера.

fuser - інші деталі

Окрім згаданої вище інформації, є ще кілька деталей, про які варто пам'ятати. Доступ до цієї інформації можна отримати, перейшовши до команди людина сторінка. Наприклад, наступна інформація про те, що термофіксатор У розділі "Обмеження" наведено список сторінок:

       Процеси, які кілька разів отримують доступ до однієї файлової або файлової системи однаково, відображаються лише один раз. Якщо один і той же об'єкт вказується кілька разів в командному рядку, деякі з цих записів можуть бути проігноровані. Фейзер може мати змогу збирати часткову інформацію, якщо не працювати з привілеями. Як наслідок, файли, відкриті процесами, що належать іншим користувачам, можуть не бути перераховані, а виконувані файли можуть бути класифіковані як зіставлені тільки. Встановлення коректора SUID утилізатора дозволить уникнути проблем, пов'язаних з частковою інформацією, але може бути небажаним з міркувань безпеки та конфіденційності. udp і tcp, а доменні розетки UNIX не можуть бути знайдені з ядрами старше 1.3.78. Доступ до ядра відображається лише за допомогою параметра -v. Параметр -k працює лише на процесах. Якщо користувачем є ядро, термофіксатор надрукує пораду, але не вживатиме жодних дій.

Висновок

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

джерело

залишити коментар

Цей сайт використовує Akismet для зменшення спаму. Дізнайтеся, як обробляються ваші дані коментарів.