лсоф
![]() | |
Оригинальный автор(ы) | Виктор А. Абель |
---|---|
Первоначальный выпуск | 1991 год [ 1 ] |
Стабильная версия | 4.99.3 [ 2 ]
/ 16 декабря 2023 г |
Репозиторий | github |
Написано в | С |
Операционная система | Linux , FreeBSD , macOS , Solaris , NetBSD и OpenBSD |
Платформа | Кросс-платформенный |
Лицензия | лицензией BSD Совместимость с [ 3 ] |
Веб-сайт | лсоф ![]() |
lsof — это команда, означающая «список открытых файлов», которая используется во многих Unix-подобных системах для сообщения списка всех открытых файлов и процессов, которые их открыли. Эта утилита с открытым исходным кодом была разработана и поддержана Виктором А. Абеллом, бывшим заместителем директора вычислительного центра Университета Пердью . Он работает и поддерживает несколько разновидностей Unix. [ 4 ]
Замена Linux, lsfd
, включен в util-linux . [ 5 ]
История
[ редактировать ]В 1985 году Клифф Спенсер публикует ofiles
команда. На его странице руководства написано: «ofiles – у кого открыт файл [...] отображается владелец и идентификатор любого процесса, обращающегося к указанному устройству». Спенсер скомпилировал его для 4.2BSD и ULTRIX . [ 6 ] Более того, в группе новостей net.unix-wizards он далее отмечает: [ 7 ]
Несмотря на всю эту болтовню про размонтирование активных файловых систем, Я разместил свою программу, чтобы указать, кто использует конкретная файловая система, «файлы» в net.sources.
В 1988 году командование fstat
(«статус файла») появляется как часть версии 4.3BSD-Tahoe . На его странице руководства написано: [ 8 ]
fstat идентифицирует открытые файлы. Файл считается открытым, если процесс открыл его, если это рабочий каталог для процесс, или если это активный текстовый файл. Если нет указаны параметры, fstat сообщает обо всех открытых файлах.
В 1989 году в comp.sources.unix Вик Абелл публикует порты файлов и команд fstat из 4.3BSD-Tahoe в « DYNIX ». 3.0.1[24] для Sequent Symmetry and Balance, SunOS 4.0 и ULTRIX 2.2". [ 9 ] [ 10 ] На протяжении многих лет разные люди разрабатывали и портировали файлы. Абель противопоставил эти команды следующим образом: [ 10 ]
Fstat похож на программу ofiles, которую я недавно представил. Нравиться ofiles, fstat идентифицирует открытые файлы. Ориентация немного отличается от файла ofiles: файл начинается с имени файла и проходит через структуры proc и пользователя для идентификации файла; fstat читает весь процесс и пользовательские структуры, отображающие информацию во всех файлах, опционально применение нескольких фильтров к выводу (включая фильтр одного имени файла).
В сочетании с netstat -aA и grep fstat идентифицирует процесс. связанный с сетевым подключением, так же, как и файлы.
В 1991 году Вик Абелл публикует lsof версии 1.0 для comp.sources.unix. Он отмечает: [ 1 ]
Lsof (для LiSt Open Files) перечисляет файлы, открытые процессами на выбранных Unix-системы. Это мой ответ тем, кто регулярно спрашивает меня, когда я собираюсь сделать fstat (comp.sources.unix том 18, номер 107) или файлы (том 18, номер 57), доступный в SunOS 4.1.1 или аналогичной версии.
Lsof — это полная переработка серии fstat/ofiles, основанная на SunOS. модель vnode. Таким образом, он был протестирован на AIX 3.1.[357], HP-UX [78].x, NeXTStep 2.[01], Sequent Dynix 3.0.12 и 3.1.2 и Sunos 4.1 и 4.1.1. Используя доступные методы доступа ядра, такие как nlist() и kvm_read(), lsof считывает записи таблицы процессов, пользовательские области и указатели файлов. базовые структуры, описывающие файлы, открытые процессами.
В 2018 году Вик Эббелл публикует lsof версии 4.92. В том же году он инициирует передачу ответственности. Он пишет: [ 11 ]
Позже в этом году мне исполнится 80 лет, и я думаю, что мне пора закончить работу над общими версиями lsof.
Код lsof помещается на Github и переносится обслуживание. [ 11 ] [ 12 ]
Примеры
[ редактировать ]К открытым файлам в системе относятся файлы на диске, именованные каналы , сетевые сокеты и устройства, открытые всеми процессами. Эту команду можно использовать, когда диск не может быть отключен из-за использования (неуказанных) файлов. Можно просмотреть список открытых файлов (при необходимости отфильтровать их соответствующим образом), чтобы определить процесс, использующий файлы.
# lsof /var
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
syslogd 350 root 5w VREG 222,5 0 440818 /var/adm/messages
syslogd 350 root 6w VREG 222,5 339098 6248 /var/log/syslog
cron 353 root cwd VDIR 222,5 512 254550 /var -- atjobs
Чтобы просмотреть порт, связанный с демоном:
# lsof -i -n -P | grep sendmail
sendmail 31649 root 4u IPv4 521738 TCP *:25 (LISTEN)
Из приведенного выше видно, что sendmail прослушивает свой стандартный порт «25».
- -я
- Перечисляет IP-сокеты.
- -н
- Не разрешайте имена хостов (без DNS).
- -П
- Не разрешайте имена портов (указывайте номер порта вместо его имени).
Также можно перечислить сокеты Unix, используя lsof -U
.
Выход Lsof
[ редактировать ]Вывод lsof описывает:
- идентификационный номер процесса (PID), открывшего файл;
- идентификационный номер группы процессов (PGID) процесса (необязательно);
- идентификационный номер родительского процесса (PPID) (необязательно);
- команда, которую выполняет процесс;
- владелец процесса;
- для всех файлов, используемых процессом, включая исполняемый текстовый файл и используемые им общие библиотеки:
- номер файлового дескриптора файла, если применимо;
- режим доступа к файлу;
- статус блокировки файла;
- номера устройств файла;
- номер индексного дескриптора файла;
- размер или смещение файла;
- имя файловой системы, содержащей файл;
- любые доступные компоненты пути к файлу;
- имена компонентов потока файла;
- локальные и удаленные сетевые адреса файла;
- состояние файла в сети TLI (обычно UDP);
- состояние TCP, длина очереди чтения и длина очереди записи файла;
- длина чтения и записи TCP-окна файла (только Solaris); и
- другие значения, специфичные для файла или диалекта.
Полный список опций см. на странице руководства Lsof(8) Linux. [ 13 ]
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Перейти обратно: а б «v25i002: lsof — преемник fstat и ofiles» . комп.источники.unix.
- ^ «Релиз 4.99.3» . 16 декабря 2023 г. Проверено 17 декабря 2023 г.
- ^ Часто задаваемые вопросы по lsof, 1.9 Существует ли лицензия lsof?
- ^ В. Ричард Стивенс; Билл Феннер; Эндрю М. Рудофф (2003), Сетевое программирование Unix: API сетевых сокетов , Addison-Wesley Professional, ISBN 978-0-13-141155-5
- ^ RFC: lsfd, новая замена lsof # 1418, специально предназначенная для Linux.
- ^ Спенсер, Клифф. "офайлы(8)" . groups.google.com . чистые.источники.
- ^ Спенсер, Клифф. « Офайлы» опубликованы в net.sources» . groups.google.com . net.unix-мастера.
- ^ «ФСТАТ(8)» . www.tuhs.org . 4.3BSD-Тахо.
- ^ «v18i057: ПЕРЕСМОТРЕННЫЕ файлы, не требуется исходный код Sun» . комп.источники.unix.
- ^ Перейти обратно: а б «v18i107: Показать статус всех открытых файлов» . комп.источники.unix.
- ^ Перейти обратно: а б «lsof переехал на GitHub и выпустил новый выпуск · Issue #39572 · Homebrew/homebrew-core» . Гитхаб .
- ^ "lsof Maintenance.md" . Гитхаб . lsof-org. 10 апреля 2023 г.
- ^ "лсоф" . Проверено 16 июля 2020 г.
Внешние ссылки
[ редактировать ]- Старый сайт
- список рассылки lsof-l
- зеркало устаревших источников
- по администрированию Linux и привилегированным командам Руководство –
- Darwin и macOS системного администратора Руководство –
- Использование lsof
- Часто задаваемые вопросы по ЛСОФ
- скрипт Сэма Нельсона PCP- , альтернатива «lsof -i» для Solaris.
- Glsof — это две отдельные утилиты (Queries и Filemonitor), основанные на lsof.
- Sloth — графический интерфейс macOS для lsof
- Страница руководства LSOF