У системі постійно працює ряд процесів, які отримують доступ до різних файлів системи. Цими файлами можуть бути файли дисків, скрипти, мережеві розетки, пристрої, іменовані канали та інші. Використовуючи “lsof”, можна виконати багато речей, таких як налагодження. Також системним адміністраторам дуже корисно з’ясувати, до яких файлів здійснюється доступ через які процеси. Один із найкорисніших сценаріїв, які я знайшов, це коли ви збираєтеся демонтувати файлову систему, але вона все ще доступна.
Без зайвих сумнівів, давайте почнемо з “lsof”! Я припускаю, що у вашій поточній системі UNIX / Linux вже встановлено “lsof”.
Розташування
який також
Це повідомляє про повний шлях команди, в даному випадку “lsof”.
Версія “lsof”lsof -v
Тут буде представлена поглиблена інформація про версію “lsof”, включаючи дату побудови двійкового файлу, версію компілятора, прапори компілятора та інші.
Основне використання “lsof”
Запустіть “lsof” самостійно.
також
Це повідомляє ВЕЛИКИЙ список усіх файлів, до яких система отримує доступ на момент запуску команди.
Незважаючи на те, що всі поля є зрозумілими, в основному плутаються щодо стовпців "FD" та "TYPE" та їх значення. Давайте перевіримо їх.
FD: Абревіатура “Дескриптор файлу”. Він пропонує наступні значення.
- cwd: поточний робочий каталог
- rtd: Кореневий каталог
- txt: текст програми (дані, код та інші)
- mem: відображений файл пам'яті
- помилка: помилка інформації FD
- mmap: Пристрій, відображений на пам'ять
- ltx: Спільний текст бібліотеки (дані та код)
- m86: Зіставлений файл DOS
Є також інші значення, які ви помітите у стовпці, наприклад “1u”, за якими йдуть u, r, w тощо. значення. Що це означає?
- r: доступ для читання
- w: доступ до запису
- u: Доступ для читання та запису
- - : Невідомий режим, і він містить символ блокування
- ": Режим невідомий, і немає символу блокування
ТИП: описує тип файлу та його ідентифікацію. Значення такі.
- DIR: Каталог
- CHR: Спеціальний файл символів
- REG: Звичайний файл
- FIFO: Перший вихід, перший вихід
Відкриті для користувача файли
Linux - це чудова багатокористувацька платформа. Кілька користувачів можуть одночасно отримати доступ до системи та виконувати операції, на які вони мають дозвіл.
Щоб перевірити файли, до яких отримує доступ певний користувач, запустіть таку команду.
lsof -u
Однак, для перевірки користувачів з вищим рангом, “lsof” потребуватиме привілею “суперкористувача”.
sudo lsof -u
Як щодо перевірки всіх команд і файлів, до яких має доступ певний користувач? Запустіть наступну.
lsof -i -u
Знову ж таки, для користувачів з вищим рангом "lsof" потребуватиме привілею "суперкористувача".
sudo lsof -i -u
Запущені процеси, що відповідають порту
Щоб дізнатись усі процеси, які в даний час використовують певний порт, зателефонуйте “lsof” із позначкою “-i”, а потім протоколом та інформацією про порт.
lsof -i<46>:
Наприклад, щоб перевірити всі програми, які зараз мають доступ до порту 80 через протокол TCP / IP, запустіть таку команду.
lsof -i TCP: 80
Цей метод також може бути використаний для показу всіх процесів, які використовують порти в певному діапазоні, наприклад, від 1 до 1000. Структура команди схожа на попередню, з невеликою магією у частині номера порту.
lsof -i TCP: 1-1000
Процеси, специфічні для протоколу
Ось 2 приклади, що демонструють процеси, які в даний час використовують протоколи IPv4 та IPv6.
lsof -i 4lsof -i 6
Перелік мережевих з'єднань
Наступна команда повідомляє про всі мережеві з'єднання з поточної системи.
lsof -i
Виключаючи за допомогою ^
Так, ми можемо виключити конкретного користувача, порт, FD та інших, використовуючи символ “^”. Все, що вам потрібно зробити, це використовувати його з обережністю, щоб не зіпсувати весь результат.
У цьому прикладі давайте виключимо всі процеси з “root” користувача.
lsof -u ^ корінь
Існують інші способи використання цього виключаючого механізму з “lsof”, наприклад, з прапорами, такими як “-c”, “-d” тощо. Не всі прапори підтримують цей механізм. Ось чому я рекомендую спробувати демонстрацію за допомогою цього методу з будь-яким прапором, перш ніж впроваджувати його в деякі сценарії.
ПІД-пошук
PID є важливою властивістю будь-якого запущеного процесу в системі. Це дозволяє більш точно визначити певний процес. Назва процесу не дуже корисна у багатьох ситуаціях, оскільки один і той же двійковий файл може створювати свої копії та паралельно виконувати різні завдання.
Якщо ви не знаєте, як отримати PID процесу, просто використовуйте “ps”, щоб перерахувати всі запущені процеси та відфільтрувати результати, використовуючи “grep” з ім’ям процесу та / або командами.
ps -A
Тепер виконайте фільтрацію за допомогою “grep”.
ps -A | grep
Тепер перевірте, до яких файлів має доступ PID.
lsof -pПерелік відкритих файлів для певного пристрою
Функціонал "lsof" не обмежується цими функціями. Ви також можете відфільтрувати результат “lsof” за принципом пристрою. Для цього команда буде виглядати приблизно так.
також
Ця команда надзвичайно корисна для того, щоб дізнатись про всі запущені процеси з інформацією про їх власника, яка отримує доступ до певної файлової системи. Якщо у вас виникають проблеми з демонтажем файлової системи, це найкращий спосіб.
такожСписок відкритих файлів у каталозі
Подібно до попереднього прикладу, просто передайте шлях до каталогу “lsof”, щоб з’ясувати, чи має доступ який-небудь процес до нього.
Примітка: “lsof” перевірить каталог рекурсивно, тому це може зайняти час.
= також + D
Бонус: припинити всю діяльність користувача
Будьте надзвичайно обережні з цією частиною, оскільки вона може просто зіпсувати все, що робить користувач. Наступна команда знищить усі запущені процеси користувача.
sudo kill -9 'lsof -t -uОсобливості “lsof” не просто зупиняються на цьому. Згадані тут є тими, які нам найбільше знадобляться щодня. Існує безліч інших функціональних можливостей “lsof”, які можуть стати в нагоді (звичайно, у конкретних випадках).
Для всіх доступних функцій та їх використання перегляньте інформацію про людину та інформаційні сторінки “lsof”.
людина такожінформація lsof
також -?
Насолоджуйтесь!