В системата постоянно се изпълняват редица процеси, които имат достъп до различни файлове на системата. Тези файлове могат да бъдат дискови файлове, скриптове, мрежови сокети, устройства, именувани канали и други. Използвайки “lsof”, е възможно да изпълнявате много неща, като отстраняване на грешки. Също така е много полезно за системните администратори да разберат до какви файлове се осъществява достъп от какви процеси. Един от най-полезните сценарии, които открих, е когато сте на път да демонтирате файлова система, но тя все още е достъпна.
Без повече шум, нека да започнем с „lsof“! Предполагам, че в текущата ви система UNIX / Linux вече е инсталиран “lsof”.
Местоположение
което също
Това отчита пълния път на командата, в този случай „lsof“.
Версия „lsof“lsof -v
Това ще отчете задълбочена информация за версията на “lsof”, включително датата на изграждане на двоичния файл, версията на компилатора, флаговете на компилатора и други.
Основно използване „lsof“
Стартирайте “lsof” от само себе си.
също
Това отчита ГОЛЯМ списък на всички файлове, до които системата има достъп в момента на изпълнение на командата.
Въпреки че всички полета са самообясними, най-вече се объркайте относно колоните „FD“ и „TYPE“ и техните стойности. Нека ги проверим.
FD: Съкращение на “File Descriptor”. Излиза със следните стойности.
- 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 и други, като използваме символа „^“. Всичко, което трябва да направите, е да го използвате с повишено внимание, за да не объркате целия изход.
В този пример нека изключим всички процеси от потребителския "корен".
lsof -u ^ корен
Има и други начини за използване на този изключващ механизъм с “lsof”, например с флагове като “-c”, “-d” и т.н. Не всички флагове поддържат този механизъм. Ето защо препоръчвам да изпробвате демонстрация с този метод с всеки флаг, преди да го внедрите в някои скриптове.
PID търсене
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
също -?
Наслади се!