⚡ ѕ–ќ…ƒ» Ќќ¬џ… ќЌЋј…Ќ  ”–— ѕќ —≈“≈¬џћ “≈’ЌќЋќ√»яћ —ќ — »ƒ ќ… 50%

до конца скидки осталось

Ќачать обучение 🚀

lsof - поиск и устранение проблем в Linux

—ери€ статей по траблшутингу в Linux/Unix

ћерион Ќетворкс

6 минут чтени€

—татьи по тематике устранение неисправностей св€заны с определенным набором решений проблем. ¬ случае с Linux и Unix полезно иметь некое руководство по доступным инструментам, облегчающим работу по поиску и устранению проблем. Ёто такой документ, который содержит основные важные команды, позвол€ющие облегчить жизнь администраторам Linux/Unix при возникновении проблем.

 оманда "list open files" или команда lsof выгл€дит достаточно просто, но ее использование в качестве инструмента дл€ устранени€ неполадок не так очевиден, как кажетс€ на первый взгл€д. Ќапример, если у неизвестного процесса открыто несколько файлов, знание того, какие они есть, может помочь определить, €вл€етс€ ли процесс легитимным.

¬ первой статье рассмотрим множество вариантов использовани€ команды lsof.

¬о второй статье рассмотрены рекомендации о том, как исправл€ть проблемы этим множеством вариаций данной команды.

 онтрольные вопросы, которые следует задать себе при диагностике проблем, €вл€етс€ предметом нашей третьей статьи. Ёто поможет навести пор€док в хаосе, который создают некоторые проблемы.

–абота с базами данных Oracle - обычна€ задача администратора, и немного узнать о них и о том, как тестировать соединени€ с ними, - ценный инструмент, описанный в четвертой статье. ≈сли проблема св€зана с подключением, отпадает потребность в вызове администратора баз данных.

¬ завершении нашего руководства приведена стать€ с инструкци€ми по командам, необходимым дл€ управлени€ дисками и разбиени€ их на разделы.


 оманда lsof

 оманда lsof - это нечто большее, чем вы можете себе представить. ”знайте обо всех возможност€х ее применени€ дл€ поиска и устранени€ неполадок.

lsof - команда Unix/Linux, котора€ отображает все открытые файлы или идентифицирует процессы, открытые конкретными файлами. ”добна€ дл€ оценки безопасности »—, а также дл€ устранени€ проблем lsof предлагает широкий спектр параметров, позвол€ющие использовать еЄ различными способами - иногда даже превосход€ команду ps дл€ просмотра процессов и команду netstat дл€ исследовани€ сетевых интерфейсов.


„то такое открытые файлы?

ƒл€ начала давайте рассмотрим, что такое открытые файлы и почему они вам могут быть интересны. ќткрытые файлы - это файлы, которые использует какой-либо процесс. Ётот процесс может быть командой, которую вы выполн€ете, или приложением, запущенным на сервере, которым вы управл€ете. ќткрытые файлы могут включать файлы данных и библиотеки, которые предоставл€ют общие процедуры. ћногие файлы открываютс€ каждый раз, когда вы входите в систему. ¬ы можете быть удивлены их количеством. ≈сли вам интересно, сколько файлов у вас открыто пр€мо сейчас, попробуйте эту команду:

$ lsof -u admin  |  wc  -l
1715

» если вы когда-нибудь слышали, что дл€ Unix все €вл€етс€ файлом, вы, возможно, не слишком удивитесь, узнав, что lsof работает с такими вещами, как сетевые интерфейсы, которые большинство из нас обычно не считают файлами.


ѕочему нам это важно?

»ногда по€вл€етс€ необходимость узнать об открытых файлах, потому что вы пытаетесь удалить файл и обнаруживаете, что он уже используетс€. ћожет быть, он заполн€ет ваше дисковое пространство. ¬ам необходимо узнать, каким файлом какой процесс открыт, чтобы можно было остановить его и очистить файл. ¬ других случа€х вам понадобитс€ узнать, что делает неизвестный подозрительный процесс, и только изучение файлов, которые открыл подозрительный процесс, может предоставить ценную информацию.


ѕринцип работы lsof?

ѕри применении команды lsof без параметров в терминале вывод€тс€ все файлы, которые открыты (используютс€) в вашей системе. ≈сли вы запустите lsof от своего имени, вы получите длинный список файлов, но выходные данные будут включать в себ€ множество сообщений об отказе в разрешении - многие из них представл€ют открытые файлы в файловой системе /proc, которые вам не разрешено видеть. «апустите команду от имени root, и вы увидите больше выходных данных.

–ис. 1 ѕример вывода команды lsof –ис. 1 ѕример вывода команды lsof

„то еще интересного?

Ѕеглый взгл€д на довольно большой справочник lsof отобразит вам, что мы увидели только меньшую ее часть возможностей. lsof имеет обширный список опций.

lsof имеет обширный список опций

¬ этой статье мы разберем наиболее полезные.

„тобы начать работу со всеми этими параметрами, вам необходимо о том знать о возможности использовани€ более одной опции. ƒл€ этого используйте слово OR. “аким образом, вы получаете список, объедин€ющий результаты указанных вами параметров. ѕомимо этого вы можете выбрать вариант, со служебным словом AND. ¬ этом случае ваши опции будут примен€тьс€ вместе. ƒругими словами, вы увидите те файлы, процессы и т. д., которые соответствуют всем указанным вами параметрам. ƒл€ применени€ объединени€ AND, добавьте в свою команду параметр -a.


ѕолезные параметры lsof

ѕримеры использовани€ lsof с параметрами, отображены на скриншотах ниже. ќни демонстрируют наиболее полезные вещи, которые вы можете применить с данной командой.

Ќа скриншоте ниже lsof, перечисл€ет все процессы, у которых открыт конкретный файл:

все процессы, у которых открыт конкретный файл

Ќа этом скриншоте выводитс€ список всех процессов, у которых есть открытые файлы в определенном каталоге:

список всех процессов, у которых есть открытые файлы в определенном каталоге

Ќа этом скриншоте показаны файлы, открытые bash:

файлы, открытые bash

Ќа этом скриншоте, но с использованием подстроки вместо полного имени процесса:

с использованием подстроки вместо полного имени процесса

Ќа этом скриншоте перечислены открытые файлы дл€ определенного идентификатора процесса:

открытые файлы дл€ определенного идентификатора процесса

lsof помогает изучить сетевые подключени€:

lsof можно использовать  дл€ изучени€  сети

Ќа скриншоте показан пример просмотра портов и/или установленных соединений.

ример просмотра портов и/или установленных соединений

“акже можно сетевые подключени€ дл€ одного конкретного источника.

сетевые подключени€ дл€ одного конкретного источника

ѕросмотр файлов пользователем

Ќа этом скриншоте lsof просматриваем открытые файлы дл€ конкретного пользовател€:

просматриваем открытые файлы дл€ конкретного пользовател€

ƒл€ просмотра открытых файлов всех пользователей, кроме определенного (здесь это root), используйте знак ^:

ƒл€ просмотра открытых файлов всех пользователей, кроме определенного (здесь это root), используйте знак ^

ѕеречислить идентификаторы процессов дл€ процессов, запускаемых конкретным пользователем:

$ sudo lsof -t -u froggy
15352
15353

«авершить все процессы, принадлежащие конкретному пользователю:

$ sudo kill  lsof -t -u froggy

»спользуйте параметр -a дл€ использовани€ оператора AND дл€ объединени€ ваших опций вместе, помн€, что это ограничивает вывод только тем, что соответствует всем указанным услови€м:

-a дл€ использовани€ оператора AND
>