Программа netstat
обладает и другими возможностями, а многие поставщики добавляют свои собственные. Обратитесь к руководству по вашей системе.
В.7. Программа lsof
Название lsof
происходит от «list open files» (перечислить открытые файлы). Как и tcpdump
, эта программа является общедоступной и представляет собой удобное средство для отладки, которое было перенесено на множество версий Unix.
Одним из общих способов применения программы lsof
при работе в сети является выявление процесса, имеющего открытый сокет, по указанному IP-адресу или порту. Программа netstat
позволяет выяснить, какой IP-адрес или порт используется, а также узнать состояние TCP-соединения, но она не позволяет идентифицировать процесс. Например, чтобы определить, какой процесс запустил сервер времени и даты, выполним следующую команду:
solaris % lsof -i TCP:daytime
COMMAND PID USER FD TYPE DEVICE SIZE/OFF INODE NAME
inetd 222 root 15u inet 0xf5a801f8 0t0 TCP *:daytime
В выводе приводятся следующие данные: команда (данный сервис обеспечивается сервером inetd
), идентификатор процесса, владелец процесса, дескриптор (15 и u означает, что он открыт на чтение и на запись), тип сокета, адрес протокола блока управления, размер смещения файла (не имеет значения для сокета), тип протокола и имя.
Еще один из традиционных случаев применения данной программы имеет место, когда мы запускаем сервер, который связывает свой заранее известный порт и получает ошибку, указывающую, что адрес уже используется. Тогда мы запускаем программу lsof
, чтобы выяснить, каким процессом используется данный порт.
Поскольку программа lsof
сообщает об открытых файлах, она не может сообщать о точках доступа, не ассоциированных с открытым файлом, то есть точках доступа TCP в состоянии TIME_WAIT.
Программа находится по адресу ftp://vic.cc.purdue.edu/pub/tools/unix/lsof. Она написана Виком Абелем (Vic Abell).
Некоторые поставщики предлагают свои программы с похожими возможностями. Например, в BSD/OS предлагается программа fstat. Однако программа lsof работает под множеством версий Unix, а использование одного инструмента в неоднородном окружении вместо подбора различных средств для каждой среды является большим преимуществом.
Приложение Г
Различные исходные коды
Г.1. Заголовочный файл unp.h
Почти каждая программа в этой книге начинается с подключения заголовочного файла unp.h
, показанного в листинге Г.1[1]. Этот файл подключает все стандартные системные заголовочные файлы, необходимые для работы большинства программ, а также некоторые общие системные заголовочные файлы. В нем также определены такие константы, как MAXLINE
, прототипы функций ANSI С для тех функций, которые мы определяем в тексте (например, readline
), и все используемые нами функции-обёртки. Сами прототипы в приведенном ниже листинге мы не показываем.
Листинг Г.1. Заголовочный файл unp.h
//lib/unp.h
1 /* Наш собственный заголовочный файл */
2 #ifndef __unp_h
3 #define __unp_h
4 #include "../config.h" /* параметры конфигурации для данной ОС */
5 /* "../config.h" генерируется сценарием configure */
6 /* изменив список директив #include,
7 нужно также изменить файл acsite.m4 */
8 #include
9 #include
10 #include
11 #include
12 #include
определения */
13 #include
14 #include
15 #include
16 #include
17 #include
18 #include
19 #include
20 #include
Вильям Л Саймон , Вильям Саймон , Наталья Владимировна Макеева , Нора Робертс , Юрий Викторович Щербатых
Зарубежная компьютерная, околокомпьютерная литература / ОС и Сети, интернет / Короткие любовные романы / Психология / Прочая справочная литература / Образование и наука / Книги по IT / Словари и Энциклопедии