[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"page-ru-/guides/linux/netstat-command":3,"mdc--8g5ul2-key":933,"mdc-luoify-key":978,"mdc-1m3p9s-key":1023,"mdc-gtb5vc-key":1046,"mdc--9he6g-key":1077,"mdc--i6gu7x-key":1124,"mdc--rzr1vk-key":1178,"mdc-r8v8o7-key":1225,"mdc-p89hh9-key":1256,"related-/guides/linux/ss-command,/guides/linux/lsof-command,/guides/linux/firewall-cmd-basics":1287},{"id":4,"title":5,"appliesTo":6,"author":12,"body":13,"canonical":864,"code":864,"createdAt":865,"description":866,"difficulty":867,"draft":868,"estimatedTime":869,"extension":870,"faq":871,"howToSteps":884,"howToTotalTime":900,"image":864,"keywords":901,"locale":911,"meta":912,"navigation":913,"path":914,"platform":915,"related":916,"section":920,"seo":921,"severity":864,"stem":922,"summary":923,"tags":924,"twitterCreator":864,"twitterSite":864,"type":931,"updatedAt":865,"__hash__":932},"content_ru/guides/linux/netstat-command.md","Netstat в Linux: как узнать открытые порты и соединения",[7,8,9,10,11],"Ubuntu 20.04+","CentOS 7+","Debian 10+","RHEL 8+","Any Linux with net-tools package","FixPedia Team",{"type":14,"value":15,"toc":850},"minimark",[16,21,30,33,49,59,63,102,106,111,120,125,162,167,183,188,204,210,214,217,233,238,246,321,324,328,339,344,358,363,377,382,409,414,434,440,445,466,470,480,496,502,506,512,609,613,651,655,836,840,846],[17,18,20],"h2",{"id":19},"введение-зачем-это-нужно","Введение / Зачем это нужно",[22,23,24,25,29],"p",{},"Команда ",[26,27,28],"code",{},"netstat"," (network statistics) — это классическая утилита командной строки в Linux для диагностики и мониторинга сетевых подключений. Она показывает таблицы маршрутизации, статистику по интерфейсам, а самое главное — список всех активных сетевых соединений (входящих и исходящих) и портов, которые находятся в состоянии прослушивания (LISTEN).",[22,31,32],{},"Этот гайд поможет вам:",[34,35,36,40,43,46],"ul",{},[37,38,39],"li",{},"Быстро определить, какие службы и приложения используют сетевые порты.",[37,41,42],{},"Найти \"зависшие\" или неожиданные соединения.",[37,44,45],{},"Диагностировать проблемы с доступностью сервиса (например, почему порт 80 не отвечает).",[37,47,48],{},"Получить базовую информацию о трафике (кто с кем общается).",[22,50,51,52,55,56,58],{},"Несмотря на появление более современных аналогов (таких как ",[26,53,54],{},"ss","), ",[26,57,28],{}," остаётся незаменимым инструментом, который часто уже установлен в системе, и его синтаксис хорошо знаком многим администраторам.",[17,60,62],{"id":61},"требования-подготовка","Требования / Подготовка",[64,65,66,73,87,96],"ol",{},[37,67,68,72],{},[69,70,71],"strong",{},"Доступ к терминалу Linux"," (Ubuntu, CentOS, Debian, RHEL, Fedora и др.).",[37,74,75,78,79,82,83,86],{},[69,76,77],{},"Права суперпользователя (root)",". Для отображения имён процессов (",[26,80,81],{},"PID/Program name",") почти всегда требуется запуск с ",[26,84,85],{},"sudo",".",[37,88,89,95],{},[69,90,91,92],{},"Установленный пакет ",[26,93,94],{},"net-tools",". На современных минималистичных установках (особенно в контейнерах) его может не быть. Инструкция по установке есть в первом шаге.",[37,97,98,101],{},[69,99,100],{},"Базовое понимание сетевых концепций",": что такое порт, протокол TCP/UDP, состояние соединения (LISTEN, ESTABLISHED).",[17,103,105],{"id":104},"пошаговая-инструкция","Пошаговая инструкция",[107,108,110],"h3",{"id":109},"шаг-1-установите-netstat-если-отсутствует","Шаг 1: Установите netstat (если отсутствует)",[22,112,113,114,117,118,86],{},"Проверьте, есть ли команда: ",[26,115,116],{},"which netstat",". Если ответ пустой, установите пакет ",[26,119,94],{},[22,121,122],{},[69,123,124],{},"Для Debian/Ubuntu и производных:",[126,127,132],"pre",{"className":128,"code":129,"language":130,"meta":131,"style":131},"language-bash shiki shiki-themes github-light github-dark","sudo apt update\nsudo apt install net-tools\n","bash","",[26,133,134,149],{"__ignoreMap":131},[135,136,139,142,146],"span",{"class":137,"line":138},"line",1,[135,140,85],{"class":141},"sScJk",[135,143,145],{"class":144},"sZZnC"," apt",[135,147,148],{"class":144}," update\n",[135,150,152,154,156,159],{"class":137,"line":151},2,[135,153,85],{"class":141},[135,155,145],{"class":144},[135,157,158],{"class":144}," install",[135,160,161],{"class":144}," net-tools\n",[22,163,164],{},[69,165,166],{},"Для RHEL/CentOS 7:",[126,168,170],{"className":128,"code":169,"language":130,"meta":131,"style":131},"sudo yum install net-tools\n",[26,171,172],{"__ignoreMap":131},[135,173,174,176,179,181],{"class":137,"line":138},[135,175,85],{"class":141},[135,177,178],{"class":144}," yum",[135,180,158],{"class":144},[135,182,161],{"class":144},[22,184,185],{},[69,186,187],{},"Для RHEL/CentOS 8+, Fedora, AlmaLinux, RockyLinux:",[126,189,191],{"className":128,"code":190,"language":130,"meta":131,"style":131},"sudo dnf install net-tools\n",[26,192,193],{"__ignoreMap":131},[135,194,195,197,200,202],{"class":137,"line":138},[135,196,85],{"class":141},[135,198,199],{"class":144}," dnf",[135,201,158],{"class":144},[135,203,161],{"class":144},[22,205,206,207,209],{},"После установки команда ",[26,208,28],{}," станет доступна.",[107,211,213],{"id":212},"шаг-2-просмотрите-все-активные-соединения-и-слушающие-порты","Шаг 2: Просмотрите все активные соединения и слушающие порты",[22,215,216],{},"Запустите основную, самую информативную команду:",[126,218,220],{"className":128,"code":219,"language":130,"meta":131,"style":131},"sudo netstat -tulpn\n",[26,221,222],{"__ignoreMap":131},[135,223,224,226,229],{"class":137,"line":138},[135,225,85],{"class":141},[135,227,228],{"class":144}," netstat",[135,230,232],{"class":231},"sj4cs"," -tulpn\n",[22,234,235],{},[69,236,237],{},"Что вы увидите и как читать вывод:",[126,239,244],{"className":240,"code":242,"language":243},[241],"language-text","Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name\ntcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1234/sshd\ntcp6       0      0 :::80                   :::*                    LISTEN      5678/nginx: master\nudp        0      0 127.0.0.1:323           0.0.0.0:*                          901/chronyd\n","text",[26,245,242],{"__ignoreMap":131},[34,247,248,268,282,296,313],{},[37,249,250,253,254,257,258,257,261,257,264,267],{},[69,251,252],{},"Proto",": Протокол (",[26,255,256],{},"tcp",", ",[26,259,260],{},"udp",[26,262,263],{},"tcp6",[26,265,266],{},"udp6",").",[37,269,270,273,274,277,278,281],{},[69,271,272],{},"Local Address",": Локальный адрес и порт. ",[26,275,276],{},"0.0.0.0:22"," — сервис слушает на всех IPv4-интерфейсах порт 22. ",[26,279,280],{},":::80"," — на всех IPv6-интерфейсах порт 80.",[37,283,284,287,288,291,292,295],{},[69,285,286],{},"Foreign Address",": Удалённый адрес и порт. ",[26,289,290],{},"0.0.0.0:*"," или ",[26,293,294],{},"*:*"," означает, что соединение не с конкретным удалённым хостом (состояние LISTEN).",[37,297,298,301,302,305,306,257,309,312],{},[69,299,300],{},"State",": Состояние соединения. Для слушающих портов — ",[26,303,304],{},"LISTEN",". Для активных соединений — ",[26,307,308],{},"ESTABLISHED",[26,310,311],{},"TIME_WAIT"," и др.",[37,314,315,317,318],{},[69,316,81],{},": Идентификатор процесса (PID) и имя программы, которая владеет сокетом. ",[69,319,320],{},"Ключевая колонка для диагностики.",[322,323],"in-article-ad",{},[107,325,327],{"id":326},"шаг-3-отфильтруйте-вывод-по-протоколу-или-порту","Шаг 3: Отфильтруйте вывод по протоколу или порту",[22,329,330,331,334,335,338],{},"Полный вывод (",[26,332,333],{},"-tulpn",") может быть очень объёмным. Фильтрация с помощью ",[26,336,337],{},"grep"," сузит результаты.",[22,340,341],{},[69,342,343],{},"Показать только TCP-соединения (игнорируя слушающие порты):",[126,345,347],{"className":128,"code":346,"language":130,"meta":131,"style":131},"sudo netstat -tn\n",[26,348,349],{"__ignoreMap":131},[135,350,351,353,355],{"class":137,"line":138},[135,352,85],{"class":141},[135,354,228],{"class":144},[135,356,357],{"class":231}," -tn\n",[22,359,360],{},[69,361,362],{},"Показать только UDP-соединения:",[126,364,366],{"className":128,"code":365,"language":130,"meta":131,"style":131},"sudo netstat -un\n",[26,367,368],{"__ignoreMap":131},[135,369,370,372,374],{"class":137,"line":138},[135,371,85],{"class":141},[135,373,228],{"class":144},[135,375,376],{"class":231}," -un\n",[22,378,379],{},[69,380,381],{},"Найти все записи, связанные с портом 80 (HTTP) или 443 (HTTPS):",[126,383,385],{"className":128,"code":384,"language":130,"meta":131,"style":131},"sudo netstat -tulpn | grep -E ':80|:443'\n",[26,386,387],{"__ignoreMap":131},[135,388,389,391,393,396,400,403,406],{"class":137,"line":138},[135,390,85],{"class":141},[135,392,228],{"class":144},[135,394,395],{"class":231}," -tulpn",[135,397,399],{"class":398},"szBVR"," |",[135,401,402],{"class":141}," grep",[135,404,405],{"class":231}," -E",[135,407,408],{"class":144}," ':80|:443'\n",[22,410,411],{},[69,412,413],{},"Найти процесс, слушающий конкретный порт (например, 3306 MySQL):",[126,415,417],{"className":128,"code":416,"language":130,"meta":131,"style":131},"sudo netstat -tulpn | grep ':3306'\n",[26,418,419],{"__ignoreMap":131},[135,420,421,423,425,427,429,431],{"class":137,"line":138},[135,422,85],{"class":141},[135,424,228],{"class":144},[135,426,395],{"class":231},[135,428,399],{"class":398},[135,430,402],{"class":141},[135,432,433],{"class":144}," ':3306'\n",[22,435,436,437,267],{},"Вывод будет содержать одну строку с PID и именем программы (например, ",[26,438,439],{},"mysqld",[22,441,442],{},[69,443,444],{},"Найти все соединения с конкретным удалённым IP-адресом:",[126,446,448],{"className":128,"code":447,"language":130,"meta":131,"style":131},"sudo netstat -tn | grep '192.168.1.100'\n",[26,449,450],{"__ignoreMap":131},[135,451,452,454,456,459,461,463],{"class":137,"line":138},[135,453,85],{"class":141},[135,455,228],{"class":144},[135,457,458],{"class":231}," -tn",[135,460,399],{"class":398},[135,462,402],{"class":141},[135,464,465],{"class":144}," '192.168.1.100'\n",[107,467,469],{"id":468},"шаг-4-отслеживайте-соединения-в-реальном-времени","Шаг 4: Отслеживайте соединения в реальном времени",[22,471,472,473,476,477,267],{},"Чтобы наблюдать за динамикой подключений (например, кто подключается к вашему SSH-демону), используйте флаг ",[26,474,475],{},"--continuous"," (или ",[26,478,479],{},"-c",[126,481,483],{"className":128,"code":482,"language":130,"meta":131,"style":131},"sudo netstat -tulpn --continuous\n",[26,484,485],{"__ignoreMap":131},[135,486,487,489,491,493],{"class":137,"line":138},[135,488,85],{"class":141},[135,490,228],{"class":144},[135,492,395],{"class":231},[135,494,495],{"class":231}," --continuous\n",[22,497,498,499,86],{},"Экран будет обновляться каждые несколько секунд. Для выхода нажмите ",[26,500,501],{},"Ctrl+C",[107,503,505],{"id":504},"шаг-5-определите-какой-процесс-использует-конкретный-порт-практический-пример","Шаг 5: Определите, какой процесс использует конкретный порт (практический пример)",[22,507,508,511],{},[69,509,510],{},"Задача:"," Порт 8080 занят, но неизвестно каким приложением. Нужно найти и, возможно, остановить этот процесс.",[64,513,514,544,555,598],{},[37,515,516,517,537,540,541],{},"Найдите процесс:",[126,518,520],{"className":128,"code":519,"language":130,"meta":131,"style":131},"sudo netstat -tulpn | grep ':8080'\n",[26,521,522],{"__ignoreMap":131},[135,523,524,526,528,530,532,534],{"class":137,"line":138},[135,525,85],{"class":141},[135,527,228],{"class":144},[135,529,395],{"class":231},[135,531,399],{"class":398},[135,533,402],{"class":141},[135,535,536],{"class":144}," ':8080'\n",[538,539],"br",{},"Пример вывода: ",[26,542,543],{},"tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 4321/java",[37,545,546,547,550,551,554],{},"Проанализируйте: Процесс с PID ",[26,548,549],{},"4321"," и именем ",[26,552,553],{},"java"," слушает порт 8080 на всех интерфейсах.",[37,556,557,558],{},"(Опционально) Получите больше информации о процессе:",[126,559,561],{"className":128,"code":560,"language":130,"meta":131,"style":131},"ps aux | grep 4321\n# или\nsudo lsof -i :8080\n",[26,562,563,578,584],{"__ignoreMap":131},[135,564,565,568,571,573,575],{"class":137,"line":138},[135,566,567],{"class":141},"ps",[135,569,570],{"class":144}," aux",[135,572,399],{"class":398},[135,574,402],{"class":141},[135,576,577],{"class":231}," 4321\n",[135,579,580],{"class":137,"line":151},[135,581,583],{"class":582},"sJ8bj","# или\n",[135,585,587,589,592,595],{"class":137,"line":586},3,[135,588,85],{"class":141},[135,590,591],{"class":144}," lsof",[135,593,594],{"class":231}," -i",[135,596,597],{"class":144}," :8080\n",[37,599,600,601,604,605,608],{},"Если это нежелательный процесс, его можно остановить: ",[26,602,603],{},"sudo kill 4321"," (мягко) или ",[26,606,607],{},"sudo kill -9 4321"," (принудительно).",[17,610,612],{"id":611},"проверка-результата","Проверка результата",[34,614,615,634,643],{},[37,616,617,620,621,624,625,257,627,257,629,257,631,633],{},[69,618,619],{},"Успешное выполнение",": Команда ",[26,622,623],{},"sudo netstat -tulpn"," выводит таблицу с колонками ",[26,626,252],{},[26,628,272],{},[26,630,300],{},[26,632,81],{},". Вы видите список всех слушающих портов и активных соединений.",[37,635,636,639,640,642],{},[69,637,638],{},"Практический результат",": Вы можете по имени процесса (",[26,641,81],{},") однозначно связать порт с конкретным сервисом (nginx, mysql, sshd, docker-proxy и т.д.). Вы можете отфильтровать вывод и найти информацию по нужному вам порту или IP.",[37,644,645,648,649,86],{},[69,646,647],{},"Критерий завершения",": Вы смогли ответить на вопрос \"Какая программа использует порт X?\" или \"Какие соединения сейчас активны?\" с помощью ",[26,650,28],{},[17,652,654],{"id":653},"возможные-проблемы","Возможные проблемы",[656,657,658,675],"table",{},[659,660,661],"thead",{},[662,663,664,669,672],"tr",{},[665,666,668],"th",{"align":667},"left","Проблема",[665,670,671],{"align":667},"Симптом",[665,673,674],{"align":667},"Решение",[676,677,678,699,727,766,788,819],"tbody",{},[662,679,680,688,693],{},[681,682,683],"td",{"align":667},[69,684,24,685,687],{},[26,686,28],{}," не найдена",[681,689,690],{"align":667},[26,691,692],{},"bash: netstat: command not found",[681,694,695,696,698],{"align":667},"Установите пакет ",[26,697,94],{}," (см. Шаг 1).",[662,700,701,710,718],{},[681,702,703],{"align":667},[69,704,705,706,709],{},"В колонке PID/Program name прочерки (",[26,707,708],{},"-",")",[681,711,712,713,715,716],{"align":667},"Вывод ",[26,714,708],{}," вместо ",[26,717,81],{},[681,719,720,721,723,724,726],{"align":667},"Запустите команду с ",[26,722,85],{},". Без привилегий root ",[26,725,28],{}," не может определить владельца сокета.",[662,728,729,738,749],{},[681,730,731],{"align":667},[69,732,733,734,737],{},"Адреса отображаются как имена (например, ",[26,735,736],{},"localhost:http",") вместо чисел",[681,739,740,741,743,744,715,746],{"align":667},"В ",[26,742,272],{}," видите ",[26,745,736],{},[26,747,748],{},"127.0.0.1:80",[681,750,751,752,755,756,758,759,761,762,765],{"align":667},"Это происходит из-за отсутствия флага ",[26,753,754],{},"-n",". Используйте ",[26,757,623],{}," (флаг ",[26,760,754],{}," уже есть в нашем шаблоне) или настройте ",[26,763,764],{},"/etc/hosts","/DNS.",[662,767,768,773,781],{},[681,769,770],{"align":667},[69,771,772],{},"Не вижу IPv6-адреса",[681,774,775,776,778,779],{"align":667},"Нет записей с ",[26,777,263],{},"/",[26,780,266],{},[681,782,783,784,787],{"align":667},"Либо на системе нет активных IPv6-соединений/слушающих портов, либо в системе отключён IPv6. Проверьте ",[26,785,786],{},"cat /proc/sys/net/ipv6/conf/all/disable_ipv6"," (0 — включён).",[662,789,790,795,804],{},[681,791,792],{"align":667},[69,793,794],{},"Вывод обрезается (длинные имена путей)",[681,796,797,798,800,801],{"align":667},"Имя программы обрезано, например ",[26,799,553],{}," вместо полного пути ",[26,802,803],{},"/usr/lib/jvm/...",[681,805,806,807,810,811,814,815,818],{"align":667},"Используйте флаг ",[26,808,809],{},"-W"," для широкого вывода: ",[26,812,813],{},"sudo netstat -tulpnW",". Или используйте ",[26,816,817],{},"ss -p",", который часто показывает полные пути.",[662,820,821,828,833],{},[681,822,823],{"align":667},[69,824,825,826],{},"Много строк в состоянии ",[26,827,311],{},[681,829,830,831],{"align":667},"Вывод \"забит\" строками с ",[26,832,311],{},[681,834,835],{"align":667},"Это нормальное состояние TCP после закрытия соединения. Оно само исчезнет через некоторое время (2*MSL). Не является ошибкой, если их количество не растёт бесконечно.",[17,837,839],{"id":838},"заключение-не-добавлять-как-отдельную-секцию","Заключение (не добавлять как отдельную секцию)",[22,841,842,843,845],{},"Вы освоили базовый, но мощный инструмент для анализа сетевой активности Linux. Навык быстрого определения \"что слушает порт\" и \"кто с кем связался\" критически важен для администрирования серверов, отладки приложений и обеспечения безопасности. Для более глубокого анализа и работы в высоконагруженных средах изучите современную альтернативу — команду ",[26,844,54],{}," (см. связанный гайд).",[847,848,849],"style",{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}",{"title":131,"searchDepth":151,"depth":151,"links":851},[852,853,854,861,862,863],{"id":19,"depth":151,"text":20},{"id":61,"depth":151,"text":62},{"id":104,"depth":151,"text":105,"children":855},[856,857,858,859,860],{"id":109,"depth":586,"text":110},{"id":212,"depth":586,"text":213},{"id":326,"depth":586,"text":327},{"id":468,"depth":586,"text":469},{"id":504,"depth":586,"text":505},{"id":611,"depth":151,"text":612},{"id":653,"depth":151,"text":654},{"id":838,"depth":151,"text":839},null,"2026-02-17 12:30:39","Пошаговая инструкция по использованию команды netstat для диагностики сети. Узнайте, какие порты открыты, какие процессы их используют и как мониторить соединения. Готовые примеры для Ubuntu, CentOS и других дистрибутивов.","medium",false,"10-15 мин","md",[872,875,878,881],{"question":873,"answer":874},"Чем netstat отличается от ss?","`ss` — это современная и более быстрая замена `netstat` из пакета `iproute2`. Она показывает больше информации (например, таймеры TCP) и работает быстрее, особенно на системах с большим количеством соединений. Для большинства задач `ss` предпочтительнее, но `netstat` всё ещё широко распространён и может быть установлен по умолчанию в старых дистрибутивах.",{"question":876,"answer":877},"Как найти процесс, который занимает конкретный порт (например, 8080)?","Используйте комбинацию флагов `-tulpn` и фильтрацию по порту через `grep`. Пример: `sudo netstat -tulpn | grep :8080`. Ключевой флаг `-p` показывает PID и имя процесса, но для его отображения почти всегда требуются права суперпользователя (`sudo`).",{"question":879,"answer":880},"Почему в выводе netstat нет информации о процессах (PID/Program name)?","Без флага `-p` утилита не пытается разрешить имена процессов. Более того, для отображения этой информации необходимо запускать команду с правами root (через `sudo`), так как информация о процессах других пользователей считается защищённой.",{"question":882,"answer":883},"Как сохранить вывод netstat в файл для дальнейшего анализа?","Просто перенаправьте стандартный вывод: `sudo netstat -tulpn > network_connections.txt`. Для более структурированного и удобного для парсинга формата можно использовать флаг `-W` (широкий вывод без усечения строк) или перенаправить вывод команды `ss` в CSV-подобный формат.",[885,888,891,894,897],{"name":886,"text":887},"Установите netstat (если отсутствует)","В большинстве современных дистрибутивов `netstat` находится в пакете `net-tools`. Установите его через менеджер пакетов: `sudo apt install net-tools` (Debian/Ubuntu) или `sudo yum install net-tools` (RHEL/CentOS 7) / `sudo dnf install net-tools` (RHEL/CentOS 8+, Fedora).",{"name":889,"text":890},"Просмотрите все активные соединения и слушающие порты","Выполните основную команду с ключевыми флагами: `sudo netstat -tulpn`. Флаги означают: `-t` (TCP), `-u` (UDP), `-l` (только слушающие сокеты), `-p` (процесс), `-n` (числовые адреса/порты, без разрешения имён).",{"name":892,"text":893},"Отфильтруйте вывод по протоколу или порту","Используйте конвейер (`|`) с `grep`. Например, чтобы увидеть только TCP-соединения: `sudo netstat -tn`. Чтобы найти все соединения на порту 80: `sudo netstat -tulpn | grep :80`. Для исключения IPv6-адресов добавьте `grep -v inet6`.",{"name":895,"text":896},"Отслеживайте соединения в реальном времени","Аналог `tail -f` для сетевых соединений. Команда `sudo netstat -tulpn --continuous` (или `-c`) будет обновлять вывод каждые несколько секунд. Полезно для мониторинга активности.",{"name":898,"text":899},"Определите, какой процесс использует конкретный порт","Найдите строку с нужным портом в выводе `sudo netstat -tulpn`. В колонках `PID/Program name` вы увидите идентификатор процесса (PID) и его имя. Например, `tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1234/sshd` означает, что демон SSH (PID 1234) слушает порт 22 на всех интерфейсах.","PT15M",[902,903,904,905,906,907,908,909,910],"netstat команда linux","как посмотреть открытые порты linux","netstat -tulpn примеры","узнать какой процесс слушает порт","диагностика сетевых соединений linux","netstat vs ss linux","фильтрация вывода netstat","порт 80 занят каким процессом","netstat все соединения","ru_RU",{},true,"/guides/linux/netstat-command","linux",[917,918,919],"/guides/linux/ss-command","/guides/linux/lsof-command","/guides/linux/firewall-cmd-basics","Гайды Linux",{"title":5,"description":866},"guides/linux/netstat-command","Это руководство научит вас эффективно использовать утилиту netstat для анализа сетевых подключений в Linux. Вы узнаете, как найти открытые порты, определить процессы-владельцы, фильтровать вывод по протоколу и интерфейсу, а также как интерпретировать результаты для диагностики проблем с сетью.",[915,28,925,926,927,928,929,930],"сеть","порты","диагностика","cli","ubuntu","centos","guide","Nxas3j0rCT7LYI2BOXNsamhCBsYkHLggRzcmdmNWz9g",{"data":934,"body":935},{},{"type":936,"children":937},"root",[938],{"type":939,"tag":22,"props":940,"children":941},"element",{},[942,947,949,954,956,962,964,969,971,976],{"type":939,"tag":26,"props":943,"children":945},{"className":944},[],[946],{"type":243,"value":54},{"type":243,"value":948}," — это современная и более быстрая замена ",{"type":939,"tag":26,"props":950,"children":952},{"className":951},[],[953],{"type":243,"value":28},{"type":243,"value":955}," из пакета ",{"type":939,"tag":26,"props":957,"children":959},{"className":958},[],[960],{"type":243,"value":961},"iproute2",{"type":243,"value":963},". Она показывает больше информации (например, таймеры TCP) и работает быстрее, особенно на системах с большим количеством соединений. Для большинства задач ",{"type":939,"tag":26,"props":965,"children":967},{"className":966},[],[968],{"type":243,"value":54},{"type":243,"value":970}," предпочтительнее, но ",{"type":939,"tag":26,"props":972,"children":974},{"className":973},[],[975],{"type":243,"value":28},{"type":243,"value":977}," всё ещё широко распространён и может быть установлен по умолчанию в старых дистрибутивах.",{"data":979,"body":980},{},{"type":936,"children":981},[982],{"type":939,"tag":22,"props":983,"children":984},{},[985,987,992,994,999,1001,1007,1009,1015,1017,1022],{"type":243,"value":986},"Используйте комбинацию флагов ",{"type":939,"tag":26,"props":988,"children":990},{"className":989},[],[991],{"type":243,"value":333},{"type":243,"value":993}," и фильтрацию по порту через ",{"type":939,"tag":26,"props":995,"children":997},{"className":996},[],[998],{"type":243,"value":337},{"type":243,"value":1000},". Пример: ",{"type":939,"tag":26,"props":1002,"children":1004},{"className":1003},[],[1005],{"type":243,"value":1006},"sudo netstat -tulpn | grep :8080",{"type":243,"value":1008},". Ключевой флаг ",{"type":939,"tag":26,"props":1010,"children":1012},{"className":1011},[],[1013],{"type":243,"value":1014},"-p",{"type":243,"value":1016}," показывает PID и имя процесса, но для его отображения почти всегда требуются права суперпользователя (",{"type":939,"tag":26,"props":1018,"children":1020},{"className":1019},[],[1021],{"type":243,"value":85},{"type":243,"value":267},{"data":1024,"body":1025},{},{"type":936,"children":1026},[1027],{"type":939,"tag":22,"props":1028,"children":1029},{},[1030,1032,1037,1039,1044],{"type":243,"value":1031},"Без флага ",{"type":939,"tag":26,"props":1033,"children":1035},{"className":1034},[],[1036],{"type":243,"value":1014},{"type":243,"value":1038}," утилита не пытается разрешить имена процессов. Более того, для отображения этой информации необходимо запускать команду с правами root (через ",{"type":939,"tag":26,"props":1040,"children":1042},{"className":1041},[],[1043],{"type":243,"value":85},{"type":243,"value":1045},"), так как информация о процессах других пользователей считается защищённой.",{"data":1047,"body":1048},{},{"type":936,"children":1049},[1050],{"type":939,"tag":22,"props":1051,"children":1052},{},[1053,1055,1061,1063,1068,1070,1075],{"type":243,"value":1054},"Просто перенаправьте стандартный вывод: ",{"type":939,"tag":26,"props":1056,"children":1058},{"className":1057},[],[1059],{"type":243,"value":1060},"sudo netstat -tulpn > network_connections.txt",{"type":243,"value":1062},". Для более структурированного и удобного для парсинга формата можно использовать флаг ",{"type":939,"tag":26,"props":1064,"children":1066},{"className":1065},[],[1067],{"type":243,"value":809},{"type":243,"value":1069}," (широкий вывод без усечения строк) или перенаправить вывод команды ",{"type":939,"tag":26,"props":1071,"children":1073},{"className":1072},[],[1074],{"type":243,"value":54},{"type":243,"value":1076}," в CSV-подобный формат.",{"data":1078,"body":1079},{},{"type":936,"children":1080},[1081],{"type":939,"tag":22,"props":1082,"children":1083},{},[1084,1086,1091,1093,1098,1100,1106,1108,1114,1116,1122],{"type":243,"value":1085},"В большинстве современных дистрибутивов ",{"type":939,"tag":26,"props":1087,"children":1089},{"className":1088},[],[1090],{"type":243,"value":28},{"type":243,"value":1092}," находится в пакете ",{"type":939,"tag":26,"props":1094,"children":1096},{"className":1095},[],[1097],{"type":243,"value":94},{"type":243,"value":1099},". Установите его через менеджер пакетов: ",{"type":939,"tag":26,"props":1101,"children":1103},{"className":1102},[],[1104],{"type":243,"value":1105},"sudo apt install net-tools",{"type":243,"value":1107}," (Debian/Ubuntu) или ",{"type":939,"tag":26,"props":1109,"children":1111},{"className":1110},[],[1112],{"type":243,"value":1113},"sudo yum install net-tools",{"type":243,"value":1115}," (RHEL/CentOS 7) / ",{"type":939,"tag":26,"props":1117,"children":1119},{"className":1118},[],[1120],{"type":243,"value":1121},"sudo dnf install net-tools",{"type":243,"value":1123}," (RHEL/CentOS 8+, Fedora).",{"data":1125,"body":1126},{},{"type":936,"children":1127},[1128],{"type":939,"tag":22,"props":1129,"children":1130},{},[1131,1133,1138,1140,1146,1148,1154,1156,1162,1164,1169,1171,1176],{"type":243,"value":1132},"Выполните основную команду с ключевыми флагами: ",{"type":939,"tag":26,"props":1134,"children":1136},{"className":1135},[],[1137],{"type":243,"value":623},{"type":243,"value":1139},". Флаги означают: ",{"type":939,"tag":26,"props":1141,"children":1143},{"className":1142},[],[1144],{"type":243,"value":1145},"-t",{"type":243,"value":1147}," (TCP), ",{"type":939,"tag":26,"props":1149,"children":1151},{"className":1150},[],[1152],{"type":243,"value":1153},"-u",{"type":243,"value":1155}," (UDP), ",{"type":939,"tag":26,"props":1157,"children":1159},{"className":1158},[],[1160],{"type":243,"value":1161},"-l",{"type":243,"value":1163}," (только слушающие сокеты), ",{"type":939,"tag":26,"props":1165,"children":1167},{"className":1166},[],[1168],{"type":243,"value":1014},{"type":243,"value":1170}," (процесс), ",{"type":939,"tag":26,"props":1172,"children":1174},{"className":1173},[],[1175],{"type":243,"value":754},{"type":243,"value":1177}," (числовые адреса/порты, без разрешения имён).",{"data":1179,"body":1180},{},{"type":936,"children":1181},[1182],{"type":939,"tag":22,"props":1183,"children":1184},{},[1185,1187,1193,1195,1200,1202,1208,1210,1216,1218,1224],{"type":243,"value":1186},"Используйте конвейер (",{"type":939,"tag":26,"props":1188,"children":1190},{"className":1189},[],[1191],{"type":243,"value":1192},"|",{"type":243,"value":1194},") с ",{"type":939,"tag":26,"props":1196,"children":1198},{"className":1197},[],[1199],{"type":243,"value":337},{"type":243,"value":1201},". Например, чтобы увидеть только TCP-соединения: ",{"type":939,"tag":26,"props":1203,"children":1205},{"className":1204},[],[1206],{"type":243,"value":1207},"sudo netstat -tn",{"type":243,"value":1209},". Чтобы найти все соединения на порту 80: ",{"type":939,"tag":26,"props":1211,"children":1213},{"className":1212},[],[1214],{"type":243,"value":1215},"sudo netstat -tulpn | grep :80",{"type":243,"value":1217},". Для исключения IPv6-адресов добавьте ",{"type":939,"tag":26,"props":1219,"children":1221},{"className":1220},[],[1222],{"type":243,"value":1223},"grep -v inet6",{"type":243,"value":86},{"data":1226,"body":1227},{},{"type":936,"children":1228},[1229],{"type":939,"tag":22,"props":1230,"children":1231},{},[1232,1234,1240,1242,1248,1249,1254],{"type":243,"value":1233},"Аналог ",{"type":939,"tag":26,"props":1235,"children":1237},{"className":1236},[],[1238],{"type":243,"value":1239},"tail -f",{"type":243,"value":1241}," для сетевых соединений. Команда ",{"type":939,"tag":26,"props":1243,"children":1245},{"className":1244},[],[1246],{"type":243,"value":1247},"sudo netstat -tulpn --continuous",{"type":243,"value":476},{"type":939,"tag":26,"props":1250,"children":1252},{"className":1251},[],[1253],{"type":243,"value":479},{"type":243,"value":1255},") будет обновлять вывод каждые несколько секунд. Полезно для мониторинга активности.",{"data":1257,"body":1258},{},{"type":936,"children":1259},[1260],{"type":939,"tag":22,"props":1261,"children":1262},{},[1263,1265,1270,1272,1277,1279,1285],{"type":243,"value":1264},"Найдите строку с нужным портом в выводе ",{"type":939,"tag":26,"props":1266,"children":1268},{"className":1267},[],[1269],{"type":243,"value":623},{"type":243,"value":1271},". В колонках ",{"type":939,"tag":26,"props":1273,"children":1275},{"className":1274},[],[1276],{"type":243,"value":81},{"type":243,"value":1278}," вы увидите идентификатор процесса (PID) и его имя. Например, ",{"type":939,"tag":26,"props":1280,"children":1282},{"className":1281},[],[1283],{"type":243,"value":1284},"tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1234/sshd",{"type":243,"value":1286}," означает, что демон SSH (PID 1234) слушает порт 22 на всех интерфейсах.",[1288],{"id":1289,"title":1290,"appliesTo":1291,"author":12,"body":1293,"canonical":864,"code":864,"createdAt":2531,"description":2532,"difficulty":867,"draft":868,"estimatedTime":2533,"extension":870,"faq":2534,"howToSteps":2547,"howToTotalTime":2566,"image":864,"keywords":2567,"locale":911,"meta":2576,"navigation":913,"path":918,"platform":915,"related":2577,"section":920,"seo":2580,"severity":864,"stem":2581,"summary":2582,"tags":2583,"twitterCreator":864,"twitterSite":864,"type":931,"updatedAt":2531,"__hash__":2589},"content_ru/guides/linux/lsof-command.md","lsof: Полное руководство по команде для поиска открытых файлов",[7,8,9,10,1292],"Любой дистрибутив с установленным пакетом lsof",{"type":14,"value":1294,"toc":2502},[1295,1297,1307,1310,1324,1327,1329,1373,1375,1379,1388,1397,1402,1408,1413,1451,1460,1472,1476,1479,1484,1496,1502,1508,1523,1538,1542,1545,1560,1566,1569,1573,1579,1595,1600,1606,1613,1619,1650,1654,1661,1666,1682,1687,1703,1708,1727,1744,1749,1793,1797,1806,1823,1829,1833,1843,1873,1900,1903,1915,1939,1960,1964,1991,1996,2019,2023,2029,2115,2117,2121,2127,2252,2254,2260,2301,2311,2313,2320,2330,2338,2375,2383,2403,2410,2420,2453,2460,2499],[17,1296,20],{"id":19},[22,1298,1299,1302,1303,1306],{},[69,1300,1301],{},"lsof"," (List Open Files) — это мощная утилита командной строки в Linux, которая позволяет увидеть, какие процессы в системе имеют открытыми файлы, каталоги, сетевые сокеты, устройства и т.д. В Unix-подобных системах почти всё является файлом, поэтому эта команда — ",[69,1304,1305],{},"основной инструмент диагностики"," для системных администраторов, разработчиков и DevOps-инженеров.",[22,1308,1309],{},"Вы научитесь решать частые проблемы:",[34,1311,1312,1315,1318,1321],{},[37,1313,1314],{},"«Порт 8080 уже занят, но каким процессом?»",[37,1316,1317],{},"«Не могу удалить файл /tmp/app.log, говорится, что он используется. Кто его держит?»",[37,1319,1320],{},"«Какие сетевые соединения активны у моего приложения?»",[37,1322,1323],{},"«Почему процесс потребляет так много дескрипторов?»",[22,1325,1326],{},"Это руководство содержит конкретные, проверенные команды с объяснениями, которые вы сможете использовать сразу.",[17,1328,62],{"id":61},[64,1330,1331,1335,1341,1370],{},[37,1332,1333,72],{},[69,1334,71],{},[37,1336,1337,1340],{},[69,1338,1339],{},"Права суперпользователя (sudo)",". Многие команды, особенно связанные с сетевыми портами и процессами других пользователей, требуют прав администратора для корректного отображения информации.",[37,1342,1343,1347,1348],{},[69,1344,91,1345],{},[26,1346,1301],{},". В большинстве дистрибутивов он есть по умолчанию, но в минимальных установках может отсутствовать.\n",[34,1349,1350,1359],{},[37,1351,1352,1355,1356],{},[69,1353,1354],{},"Debian/Ubuntu:"," ",[26,1357,1358],{},"sudo apt update && sudo apt install lsof",[37,1360,1361,1355,1364,291,1367],{},[69,1362,1363],{},"RHEL/CentOS/Fedora:",[26,1365,1366],{},"sudo yum install lsof",[26,1368,1369],{},"sudo dnf install lsof",[37,1371,1372],{},"Базовое понимание командной строки и концепции PID (идентификатор процесса).",[17,1374,105],{"id":104},[107,1376,1378],{"id":1377},"шаг-1-базовый-синтаксис-и-просмотр-всех-открытых-файлов","Шаг 1: Базовый синтаксис и просмотр всех открытых файлов",[22,1380,1381,1382,1384,1385,86],{},"Запуск ",[26,1383,1301],{}," без аргументов выведет список ",[69,1386,1387],{},"всех открытых файлов текущего пользователя",[126,1389,1391],{"className":128,"code":1390,"language":130,"meta":131,"style":131},"lsof\n",[26,1392,1393],{"__ignoreMap":131},[135,1394,1395],{"class":137,"line":138},[135,1396,1390],{"class":141},[22,1398,1399],{},[69,1400,1401],{},"Пример вывода (упрощённо):",[126,1403,1406],{"className":1404,"code":1405,"language":243},[241],"COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME\nbash    1234 user  cwd    DIR    8,1     4096    2 /\nbash    1234 user  txt    REG    8,1  1028096 12345 /bin/bash\nbash    1234 user  mem    REG    8,1  1985224 67890 /lib/x86_64-linux-gnu/libc-2.31.so\n...\n",[26,1407,1405],{"__ignoreMap":131},[22,1409,1410],{},[69,1411,1412],{},"Ключевые столбцы:",[34,1414,1415,1421,1427,1433,1439,1445],{},[37,1416,1417,1420],{},[26,1418,1419],{},"COMMAND"," — имя исполняемого файла процесса.",[37,1422,1423,1426],{},[26,1424,1425],{},"PID"," — идентификатор процесса.",[37,1428,1429,1432],{},[26,1430,1431],{},"USER"," — владелец процесса.",[37,1434,1435,1438],{},[26,1436,1437],{},"FD"," — файловый дескриптор (cwd — текущий каталог, txt — исполняемый код, mem — отображённая в память область).",[37,1440,1441,1444],{},[26,1442,1443],{},"TYPE"," — тип файла (REG — обычный файл, DIR — каталог, CHR — символьное устройство, IPv4/IPv6 — сетевой сокет).",[37,1446,1447,1450],{},[26,1448,1449],{},"NAME"," — путь к файлу или информация о сокете.",[22,1452,1453,1456,1457,1459],{},[69,1454,1455],{},"Для полной системной картины"," (всех пользователей) используйте ",[26,1458,85],{},":",[126,1461,1463],{"className":128,"code":1462,"language":130,"meta":131,"style":131},"sudo lsof\n",[26,1464,1465],{"__ignoreMap":131},[135,1466,1467,1469],{"class":137,"line":138},[135,1468,85],{"class":141},[135,1470,1471],{"class":144}," lsof\n",[107,1473,1475],{"id":1474},"шаг-2-поиск-процессов-открывших-конкретный-файл-или-каталог","Шаг 2: Поиск процессов, открывших конкретный файл или каталог",[22,1477,1478],{},"Это самая частая задача: «Кто использует этот файл?».",[22,1480,1481],{},[69,1482,1483],{},"Для одного файла:",[126,1485,1487],{"className":128,"code":1486,"language":130,"meta":131,"style":131},"lsof /path/to/file.log\n",[26,1488,1489],{"__ignoreMap":131},[135,1490,1491,1493],{"class":137,"line":138},[135,1492,1301],{"class":141},[135,1494,1495],{"class":144}," /path/to/file.log\n",[22,1497,1498,1499],{},"Пример: ",[26,1500,1501],{},"lsof /var/log/syslog",[22,1503,1504,1507],{},[69,1505,1506],{},"Рекурсивный поиск по каталогу"," (все файлы внутри):",[126,1509,1511],{"className":128,"code":1510,"language":130,"meta":131,"style":131},"lsof +D /home/user/documents/\n",[26,1512,1513],{"__ignoreMap":131},[135,1514,1515,1517,1520],{"class":137,"line":138},[135,1516,1301],{"class":141},[135,1518,1519],{"class":144}," +D",[135,1521,1522],{"class":144}," /home/user/documents/\n",[22,1524,1525,1526,1529,1530,1533,1534,1537],{},"⚠️ ",[69,1527,1528],{},"Важно:"," Опция ",[26,1531,1532],{},"+D"," может работать ",[69,1535,1536],{},"очень медленно"," на больших каталогах, так как проверяет каждый подкаталог. Для быстрой проверки конкретного файла используйте первый вариант.",[107,1539,1541],{"id":1540},"шаг-3-поиск-процесса-по-его-pid-что-открыл-процесс","Шаг 3: Поиск процесса по его PID (что открыл процесс)",[22,1543,1544],{},"Если вы знаете PID процесса (например, 5678), посмотрите, какие ресурсы он использует:",[126,1546,1548],{"className":128,"code":1547,"language":130,"meta":131,"style":131},"lsof -p 5678\n",[26,1549,1550],{"__ignoreMap":131},[135,1551,1552,1554,1557],{"class":137,"line":138},[135,1553,1301],{"class":141},[135,1555,1556],{"class":231}," -p",[135,1558,1559],{"class":231}," 5678\n",[22,1561,1562,1563,86],{},"Можно указать несколько PID через запятую: ",[26,1564,1565],{},"lsof -p 5678,9012",[22,1567,1568],{},"Это полезно для анализа работы запущенного демона, контейнера или подозрительного процесса.",[107,1570,1572],{"id":1571},"шаг-4-поиск-процесса-слушающего-сетевой-порт","Шаг 4: Поиск процесса, слушающего сетевой порт",[22,1574,1575,1578],{},[69,1576,1577],{},"Классическая задача:"," «Порт 3000 занят, какой процесс его слушает?».",[126,1580,1582],{"className":128,"code":1581,"language":130,"meta":131,"style":131},"sudo lsof -i :3000\n",[26,1583,1584],{"__ignoreMap":131},[135,1585,1586,1588,1590,1592],{"class":137,"line":138},[135,1587,85],{"class":141},[135,1589,591],{"class":144},[135,1591,594],{"class":231},[135,1593,1594],{"class":144}," :3000\n",[22,1596,1597],{},[69,1598,1599],{},"Пример вывода:",[126,1601,1604],{"className":1602,"code":1603,"language":243},[241],"COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME\nnode    4321 user   20u  IPv6 123456      0t0  TCP *:3000 (LISTEN)\n",[26,1605,1603],{"__ignoreMap":131},[22,1607,1608,1609,1612],{},"Здесь видно, что порт 3000 слушает процесс ",[26,1610,1611],{},"node"," (Node.js) с PID 4321.",[22,1614,1615,1618],{},[69,1616,1617],{},"Поиск по имени службы/порта"," (если порт известен, например, 80 для HTTP):",[126,1620,1622],{"className":128,"code":1621,"language":130,"meta":131,"style":131},"sudo lsof -i :http\n# или\nsudo lsof -i :80\n",[26,1623,1624,1635,1639],{"__ignoreMap":131},[135,1625,1626,1628,1630,1632],{"class":137,"line":138},[135,1627,85],{"class":141},[135,1629,591],{"class":144},[135,1631,594],{"class":231},[135,1633,1634],{"class":144}," :http\n",[135,1636,1637],{"class":137,"line":151},[135,1638,583],{"class":582},[135,1640,1641,1643,1645,1647],{"class":137,"line":586},[135,1642,85],{"class":141},[135,1644,591],{"class":144},[135,1646,594],{"class":231},[135,1648,1649],{"class":144}," :80\n",[107,1651,1653],{"id":1652},"шаг-5-расширенная-фильтрация-сетевых-соединений","Шаг 5: Расширенная фильтрация сетевых соединений",[22,1655,1656,1657,1660],{},"Комбинация опций ",[26,1658,1659],{},"-i"," позволяет тонко настраивать фильтрацию.",[22,1662,1663],{},[69,1664,1665],{},"Только TCP-соединения:",[126,1667,1669],{"className":128,"code":1668,"language":130,"meta":131,"style":131},"sudo lsof -i tcp\n",[26,1670,1671],{"__ignoreMap":131},[135,1672,1673,1675,1677,1679],{"class":137,"line":138},[135,1674,85],{"class":141},[135,1676,591],{"class":144},[135,1678,594],{"class":231},[135,1680,1681],{"class":144}," tcp\n",[22,1683,1684],{},[69,1685,1686],{},"Только UDP-сокеты:",[126,1688,1690],{"className":128,"code":1689,"language":130,"meta":131,"style":131},"sudo lsof -i udp\n",[26,1691,1692],{"__ignoreMap":131},[135,1693,1694,1696,1698,1700],{"class":137,"line":138},[135,1695,85],{"class":141},[135,1697,591],{"class":144},[135,1699,594],{"class":231},[135,1701,1702],{"class":144}," udp\n",[22,1704,1705],{},[69,1706,1707],{},"Соединения в состоянии LISTEN (слушающие порты):",[126,1709,1711],{"className":128,"code":1710,"language":130,"meta":131,"style":131},"sudo lsof -i -s tcp:listen\n",[26,1712,1713],{"__ignoreMap":131},[135,1714,1715,1717,1719,1721,1724],{"class":137,"line":138},[135,1716,85],{"class":141},[135,1718,591],{"class":144},[135,1720,594],{"class":231},[135,1722,1723],{"class":231}," -s",[135,1725,1726],{"class":144}," tcp:listen\n",[22,1728,1729,1730,1733,1734,257,1737,257,1740,1743],{},"Опция ",[26,1731,1732],{},"-s"," позволяет фильтровать по состоянию соединения (",[26,1735,1736],{},"established",[26,1738,1739],{},"listen",[26,1741,1742],{},"close_wait"," и др.).",[22,1745,1746],{},[69,1747,1748],{},"Соединения с конкретного или на конкретный IP-адрес:",[126,1750,1752],{"className":128,"code":1751,"language":130,"meta":131,"style":131},"# Все соединения с удалённого адреса 192.168.1.100\nsudo lsof -i @192.168.1.100\n\n# Все соединения на локальный интерфейс 192.168.1.5:80\nsudo lsof -i @192.168.1.5:80\n",[26,1753,1754,1759,1770,1775,1781],{"__ignoreMap":131},[135,1755,1756],{"class":137,"line":138},[135,1757,1758],{"class":582},"# Все соединения с удалённого адреса 192.168.1.100\n",[135,1760,1761,1763,1765,1767],{"class":137,"line":151},[135,1762,85],{"class":141},[135,1764,591],{"class":144},[135,1766,594],{"class":231},[135,1768,1769],{"class":144}," @192.168.1.100\n",[135,1771,1772],{"class":137,"line":586},[135,1773,1774],{"emptyLinePlaceholder":913},"\n",[135,1776,1778],{"class":137,"line":1777},4,[135,1779,1780],{"class":582},"# Все соединения на локальный интерфейс 192.168.1.5:80\n",[135,1782,1784,1786,1788,1790],{"class":137,"line":1783},5,[135,1785,85],{"class":141},[135,1787,591],{"class":144},[135,1789,594],{"class":231},[135,1791,1792],{"class":144}," @192.168.1.5:80\n",[107,1794,1796],{"id":1795},"шаг-6-поиск-файлов-открытых-определённым-пользователем","Шаг 6: Поиск файлов, открытых определённым пользователем",[22,1798,1799,1800,291,1803,1459],{},"Чтобы увидеть все файлы, открытые пользователем ",[26,1801,1802],{},"apache",[26,1804,1805],{},"www-data",[126,1807,1809],{"className":128,"code":1808,"language":130,"meta":131,"style":131},"sudo lsof -u apache\n",[26,1810,1811],{"__ignoreMap":131},[135,1812,1813,1815,1817,1820],{"class":137,"line":138},[135,1814,85],{"class":141},[135,1816,591],{"class":144},[135,1818,1819],{"class":231}," -u",[135,1821,1822],{"class":144}," apache\n",[22,1824,1825,1826,86],{},"Можно указать нескольких пользователей: ",[26,1827,1828],{},"lsof -u user1,user2",[107,1830,1832],{"id":1831},"шаг-7-комбинирование-фильтров-логическое-и","Шаг 7: Комбинирование фильтров (логическое И)",[22,1834,1835,1836,1838,1839,1842],{},"Фильтры в ",[26,1837,1301],{}," по умолчанию объединяются через ",[69,1840,1841],{},"И"," (логическое умножение). Это очень мощно.",[22,1844,1845,1848,1849,1852,1853,1856,1857,1852,1860,1863,1864,1852,1870,267],{},[69,1846,1847],{},"Пример:"," Найти все ",[69,1850,1851],{},"TCP-соединения"," (",[26,1854,1855],{},"-i tcp","), которые ",[69,1858,1859],{},"слушают",[26,1861,1862],{},"-s tcp:listen",") и принадлежат ",[69,1865,1866,1867],{},"процессу с именем ",[26,1868,1869],{},"nginx",[26,1871,1872],{},"-c nginx",[126,1874,1876],{"className":128,"code":1875,"language":130,"meta":131,"style":131},"sudo lsof -i tcp -s tcp:listen -c nginx\n",[26,1877,1878],{"__ignoreMap":131},[135,1879,1880,1882,1884,1886,1889,1891,1894,1897],{"class":137,"line":138},[135,1881,85],{"class":141},[135,1883,591],{"class":144},[135,1885,594],{"class":231},[135,1887,1888],{"class":144}," tcp",[135,1890,1723],{"class":231},[135,1892,1893],{"class":144}," tcp:listen",[135,1895,1896],{"class":231}," -c",[135,1898,1899],{"class":144}," nginx\n",[22,1901,1902],{},"Где:",[34,1904,1905],{},[37,1906,1907,1910,1911,1914],{},[26,1908,1909],{},"-c \u003Ccommand>"," — фильтр по первым символам имени команды (можно использовать ",[26,1912,1913],{},"^nginx"," для точного совпадения с начала строки).",[22,1916,1917,1920,1921,1924,1925,1931,1932,1938],{},[69,1918,1919],{},"Ещё пример:"," Какие ",[69,1922,1923],{},"файлы"," открывает ",[69,1926,1927,1928],{},"пользователь ",[26,1929,1930],{},"postgres"," в ",[69,1933,1934,1935],{},"каталоге ",[26,1936,1937],{},"/var/lib/postgresql","?",[126,1940,1942],{"className":128,"code":1941,"language":130,"meta":131,"style":131},"sudo lsof -u postgres +D /var/lib/postgresql\n",[26,1943,1944],{"__ignoreMap":131},[135,1945,1946,1948,1950,1952,1955,1957],{"class":137,"line":138},[135,1947,85],{"class":141},[135,1949,591],{"class":144},[135,1951,1819],{"class":231},[135,1953,1954],{"class":144}," postgres",[135,1956,1519],{"class":144},[135,1958,1959],{"class":144}," /var/lib/postgresql\n",[107,1961,1963],{"id":1962},"шаг-8-полезные-опции-для-удобного-вывода","Шаг 8: Полезные опции для удобного вывода",[34,1965,1966,1971,1977,1983],{},[37,1967,1968,1970],{},[26,1969,754],{}," — не преобразовывать IP-адреса в имена хостов (ускоряет вывод).",[37,1972,1973,1976],{},[26,1974,1975],{},"-P"," — не преобразовывать номера портов в имена служб (порт 80 вместо http).",[37,1978,1979,1982],{},[26,1980,1981],{},"-F"," — вывод в формате, удобном для парсинга скриптами (каждая строка — поле, начинается с символа-идентификатора).",[37,1984,1985,1987,1988,267],{},[26,1986,1145],{}," — вывод только PID (удобно для передачи в другие команды, например, ",[26,1989,1990],{},"kill",[22,1992,1993],{},[69,1994,1995],{},"Пример быстрой и чистой проверки слушающих портов:",[126,1997,1999],{"className":128,"code":1998,"language":130,"meta":131,"style":131},"sudo lsof -i -s tcp:listen -n -P\n",[26,2000,2001],{"__ignoreMap":131},[135,2002,2003,2005,2007,2009,2011,2013,2016],{"class":137,"line":138},[135,2004,85],{"class":141},[135,2006,591],{"class":144},[135,2008,594],{"class":231},[135,2010,1723],{"class":231},[135,2012,1893],{"class":144},[135,2014,2015],{"class":231}," -n",[135,2017,2018],{"class":231}," -P\n",[107,2020,2022],{"id":2021},"шаг-9-практический-пример-остановка-процесса-блокирующего-порт","Шаг 9: Практический пример — остановка процесса, блокирующего порт",[22,2024,2025,2026,86],{},"Допустим, вы запускаете веб-сервер на порту 8080 и получаете ошибку ",[26,2027,2028],{},"Address already in use",[64,2030,2031,2062,2109],{},[37,2032,2033,2036,2051,2053,2054,2056,2057,2059,2060,267],{},[69,2034,2035],{},"Найдите виновника:",[126,2037,2039],{"className":128,"code":2038,"language":130,"meta":131,"style":131},"sudo lsof -i :8080\n",[26,2040,2041],{"__ignoreMap":131},[135,2042,2043,2045,2047,2049],{"class":137,"line":138},[135,2044,85],{"class":141},[135,2046,591],{"class":144},[135,2048,594],{"class":231},[135,2050,597],{"class":144},[538,2052],{},"В выводе смотрите ",[26,2055,1425],{}," (например, 12345) и ",[26,2058,1419],{}," (например, ",[26,2061,553],{},[37,2063,2064,2067,2068,2083,2085,2086,2089,2090,2092,2093],{},[69,2065,2066],{},"Остановите процесс"," (если это не критичная служба):",[126,2069,2071],{"className":128,"code":2070,"language":130,"meta":131,"style":131},"sudo kill 12345\n",[26,2072,2073],{"__ignoreMap":131},[135,2074,2075,2077,2080],{"class":137,"line":138},[135,2076,85],{"class":141},[135,2078,2079],{"class":144}," kill",[135,2081,2082],{"class":231}," 12345\n",[538,2084],{},"Если процесс не реагирует на ",[26,2087,2088],{},"SIGTERM"," (обычный ",[26,2091,1990],{},"), используйте принудительное завершение:",[126,2094,2096],{"className":128,"code":2095,"language":130,"meta":131,"style":131},"sudo kill -9 12345\n",[26,2097,2098],{"__ignoreMap":131},[135,2099,2100,2102,2104,2107],{"class":137,"line":138},[135,2101,85],{"class":141},[135,2103,2079],{"class":144},[135,2105,2106],{"class":231}," -9",[135,2108,2082],{"class":231},[37,2110,2111,2114],{},[69,2112,2113],{},"Перезапустите ваш сервер",". Порт теперь должен быть свободен.",[322,2116],{},[107,2118,2120],{"id":2119},"шаг-10-поиск-утечек-файловых-дескрипторов","Шаг 10: Поиск утечек файловых дескрипторов",[22,2122,2123,2124,267],{},"Если процесс (особенно долгоживущий) открывает много файлов и не закрывает их, это может привести к исчерпанию лимита системы (",[26,2125,2126],{}," Too many open files",[64,2128,2129,2172],{},[37,2130,2131,2134,2166,2168,2169,2171],{},[69,2132,2133],{},"Посмотреть, сколько дескрипторов открыто у процесса:",[126,2135,2137],{"className":128,"code":2136,"language":130,"meta":131,"style":131},"lsof -p \u003CPID> | wc -l\n",[26,2138,2139],{"__ignoreMap":131},[135,2140,2141,2143,2145,2148,2151,2155,2158,2160,2163],{"class":137,"line":138},[135,2142,1301],{"class":141},[135,2144,1556],{"class":231},[135,2146,2147],{"class":398}," \u003C",[135,2149,2150],{"class":144},"PI",[135,2152,2154],{"class":2153},"sVt8B","D",[135,2156,2157],{"class":398},">",[135,2159,399],{"class":398},[135,2161,2162],{"class":141}," wc",[135,2164,2165],{"class":231}," -l\n",[538,2167],{},"(Строка с ",[26,2170,1419],{}," тоже учитывается, но для оценки порядок величин подходит).",[37,2173,2174,2177,2223,2225,2226],{},[69,2175,2176],{},"Посмотреть топ-процессов по количеству открытых файлов:",[126,2178,2180],{"className":128,"code":2179,"language":130,"meta":131,"style":131},"sudo lsof | awk '{print $2}' | sort | uniq -c | sort -nr | head -20\n",[26,2181,2182],{"__ignoreMap":131},[135,2183,2184,2186,2188,2190,2193,2196,2198,2201,2203,2206,2208,2210,2212,2215,2217,2220],{"class":137,"line":138},[135,2185,85],{"class":141},[135,2187,591],{"class":144},[135,2189,399],{"class":398},[135,2191,2192],{"class":141}," awk",[135,2194,2195],{"class":144}," '{print $2}'",[135,2197,399],{"class":398},[135,2199,2200],{"class":141}," sort",[135,2202,399],{"class":398},[135,2204,2205],{"class":141}," uniq",[135,2207,1896],{"class":231},[135,2209,399],{"class":398},[135,2211,2200],{"class":141},[135,2213,2214],{"class":231}," -nr",[135,2216,399],{"class":398},[135,2218,2219],{"class":141}," head",[135,2221,2222],{"class":231}," -20\n",[538,2224],{},"Эта команда:",[34,2227,2228,2234,2240,2246],{},[37,2229,2230,2233],{},[26,2231,2232],{},"awk '{print $2}'"," — вырезает второй столбец (PID).",[37,2235,2236,2239],{},[26,2237,2238],{},"sort | uniq -c"," — подсчитывает количество вхождений каждого PID.",[37,2241,2242,2245],{},[26,2243,2244],{},"sort -nr"," — сортирует по убыванию количества.",[37,2247,2248,2251],{},[26,2249,2250],{},"head -20"," — показывает топ-20.",[17,2253,612],{"id":611},[22,2255,2256,2257,2259],{},"После выполнения любой команды ",[26,2258,1301],{}," проверьте, что вывод содержит ожидаемые данные:",[34,2261,2262,2271,2295],{},[37,2263,2264,2267,2268,2270],{},[69,2265,2266],{},"Для поиска по файлу:"," В столбце ",[26,2269,1449],{}," должен быть указан ваш путь.",[37,2272,2273,2267,2276,2278,2279,291,2282,2285,2286,2288,2289,291,2292,86],{},[69,2274,2275],{},"Для поиска по порту:",[26,2277,1449],{}," должно быть ",[26,2280,2281],{},"*:порт",[26,2283,2284],{},"IP:порт",", а в ",[26,2287,1443],{}," — ",[26,2290,2291],{},"IPv4",[26,2293,2294],{},"IPv6",[37,2296,2297,2300],{},[69,2298,2299],{},"Для поиска по PID:"," В списке должен присутствовать указанный PID.",[22,2302,2303,2304,2307,2308,2310],{},"Если вывод пуст, это означает, что соответствующие ресурсы ",[69,2305,2306],{},"не открыты"," (файл не используется, порт не слушается) или вы запустили команду без ",[26,2309,85],{}," и не видите процессы других пользователей.",[17,2312,654],{"id":653},[107,2314,2316,2317],{"id":2315},"проблема-1-lsof-command-not-found","Проблема 1: ",[26,2318,2319],{},"lsof: command not found",[22,2321,2322,2325,2326,2329],{},[69,2323,2324],{},"Причина:"," Пакет не установлен.\n",[69,2327,2328],{},"Решение:"," Установите через менеджер пакетов вашего дистрибутива (см. Требования).",[107,2331,2333,2334,2337],{"id":2332},"проблема-2-пустой-вывод-при-поиске-по-порту-sudo-lsof-i-80-ничего-не-показывает","Проблема 2: Пустой вывод при поиске по порту (",[26,2335,2336],{},"sudo lsof -i :80"," ничего не показывает)",[22,2339,2340,2343,2344,2347,2348,2350,2351,2353,2354,2357,2358,2361,2362,2364,2365,2367,2368,291,2371,2374],{},[69,2341,2342],{},"Причина 1:"," Никакой процесс действительно не слушает этот порт. Порт свободен.\n",[69,2345,2346],{},"Причина 2:"," Вы ищете порт ",[69,2349,2294],{},", а процесс слушает ",[69,2352,2291],{}," (или наоборот). Попробуйте ",[26,2355,2356],{},"sudo lsof -i -P -n | grep :80"," для общего поиска.\n",[69,2359,2360],{},"Причина 3:"," Порт находится в состоянии ",[26,2363,311],{}," (закрытое соединение, которое ещё не освободилось полностью). ",[26,2366,1301],{}," по умолчанию не показывает такие сокеты. Используйте ",[26,2369,2370],{},"netstat -an | grep :80",[26,2372,2373],{},"ss -ltnp"," для более полной картины.",[107,2376,2378,2379,2382],{"id":2377},"проблема-3-permission-denied-или-недостаточно-прав","Проблема 3: ",[26,2380,2381],{},"permission denied"," или недостаточно прав",[22,2384,2385,2387,2388,2390,2391,2393,2394,2396,2397,2399,2400,86],{},[69,2386,2324],{}," Вы пытаетесь увидеть открытые файлы процесса, принадлежащего другому пользователю (особенно ",[26,2389,936],{},"), без ",[26,2392,85],{},".\n",[69,2395,2328],{}," Всегда используйте ",[26,2398,85],{}," для системного обзора: ",[26,2401,2402],{},"sudo lsof",[107,2404,2406,2407,2409],{"id":2405},"проблема-4-команда-lsof-работает-очень-медленно","Проблема 4: Команда ",[26,2408,1301],{}," работает очень медленно",[22,2411,2412,2414,2415,2417,2418],{},[69,2413,2324],{}," Использование опции ",[26,2416,1532],{}," на большом каталоге или фильтрация по сложному шаблону.\n",[69,2419,2328],{},[34,2421,2422,2434,2444],{},[37,2423,2424,2425,2427,2428,257,2430,2433],{},"Избегайте ",[26,2426,1532],{}," на корневых каталогах (",[26,2429,778],{},[26,2431,2432],{},"/home","). Ищите конкретные файлы.",[37,2435,2436,2437,257,2439,257,2441,2443],{},"Используйте более точные фильтры (",[26,2438,1014],{},[26,2440,1153],{},[26,2442,479],{},") для уменьшения объема обрабатываемых данных.",[37,2445,2446,2447,2449,2450,2452],{},"Добавьте ",[26,2448,754],{}," и ",[26,2451,1975],{}," для отключения преобразования имён (ускоряет работу).",[107,2454,2456,2457,2459],{"id":2455},"проблема-5-не-могу-удалить-файл-хотя-lsof-не-показывает-его-использование","Проблема 5: Не могу удалить файл, хотя ",[26,2458,1301],{}," не показывает его использование",[22,2461,2462,2464,2465,2467,2468,2471,2472,2474,2475,2479,2480,2482,2483,2485,2486,2488,2489,2491,2492,291,2495,2498],{},[69,2463,2342],{}," Файл удалён, но ещё открыт процессом. В ",[26,2466,1301],{}," такой файл отобразится как ",[26,2469,2470],{},"(deleted)"," в конце строки ",[26,2473,1449],{},". Процесс продолжает писать в этот ",[2476,2477,2478],"em",{},"уже удалённый"," файловый дескриптор, занимая место на диске.\n",[69,2481,2328],{}," Остановите процесс (",[26,2484,1990],{},"), который держит дескриптор. Освобождение места на диске произойдёт автоматически после завершения процесса.\n",[69,2487,2346],{}," Файл используется не процессом, а ядром (например, как swap-файл или корень смонтированной файловой системы). ",[26,2490,1301],{}," может не показать такие системные использования. Используйте ",[26,2493,2494],{},"fuser -v /path/to/file",[26,2496,2497],{},"lsof /path/to/file | grep -v '(deleted)'"," для чистоты вывода.",[847,2500,2501],{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}",{"title":131,"searchDepth":151,"depth":151,"links":2503},[2504,2505,2506,2518,2519],{"id":19,"depth":151,"text":20},{"id":61,"depth":151,"text":62},{"id":104,"depth":151,"text":105,"children":2507},[2508,2509,2510,2511,2512,2513,2514,2515,2516,2517],{"id":1377,"depth":586,"text":1378},{"id":1474,"depth":586,"text":1475},{"id":1540,"depth":586,"text":1541},{"id":1571,"depth":586,"text":1572},{"id":1652,"depth":586,"text":1653},{"id":1795,"depth":586,"text":1796},{"id":1831,"depth":586,"text":1832},{"id":1962,"depth":586,"text":1963},{"id":2021,"depth":586,"text":2022},{"id":2119,"depth":586,"text":2120},{"id":611,"depth":151,"text":612},{"id":653,"depth":151,"text":654,"children":2520},[2521,2523,2525,2527,2529],{"id":2315,"depth":586,"text":2522},"Проблема 1: lsof: command not found",{"id":2332,"depth":586,"text":2524},"Проблема 2: Пустой вывод при поиске по порту (sudo lsof -i :80 ничего не показывает)",{"id":2377,"depth":586,"text":2526},"Проблема 3: permission denied или недостаточно прав",{"id":2405,"depth":586,"text":2528},"Проблема 4: Команда lsof работает очень медленно",{"id":2455,"depth":586,"text":2530},"Проблема 5: Не могу удалить файл, хотя lsof не показывает его использование","2026-02-16 19:03:50","Изучите мощную команду lsof в Linux с практическими примерами. Узнайте, как найти процессы, блокирующие порты, файлы и сокеты. Пошаговая инструкция с 15+ примерами.","15-20 мин",[2535,2538,2541,2544],{"question":2536,"answer":2537},"Что такое lsof и зачем он нужен?","lsof (List Open Files) — утилита командной строки, которая показывает, какие файлы, каталоги, сокеты и устройства в данный момент открыты какими процессами. Это ключевой инструмент для диагностики: 'кто держит этот файл/порт?', 'почему не могу удалить?', 'какие соединения активны?'.",{"question":2539,"answer":2540},"Почему lsof выдает 'command not found'?","Пакет lsof не установлен по умолчанию в некоторых минималистичных дистрибутивах. Установите его через менеджер пакетов: `sudo apt install lsof` (Debian/Ubuntu) или `sudo yum install lsof` (RHEL/CentOS).",{"question":2542,"answer":2543},"Как найти, какой процесс слушает определённый порт (например, 80)?","Используйте комбинацию опций: `sudo lsof -i :80`. Флаг `-i` фильтрует по сетевым соединениям, а `:80` указывает конкретный порт. Без `sudo` могут не отображаться процессы других пользователей.",{"question":2545,"answer":2546},"Чем lsof отличается от netstat или ss?","lsof показывает информацию в контексте процессов (PID, имя команды) и файловых дескрипторов. netstat/ss показывают только сетевое состояние. `lsof -i` даёт более полную картину, связывая порт/сокет с конкретным процессом и файлом.",[2548,2551,2554,2557,2560,2563],{"name":2549,"text":2550},"Установка и проверка доступности","Убедитесь, что lsof установлен. Выполните `lsof -v` для проверки версии. Если команда не найдена, установите пакет через системный менеджер пакетов (apt/yum/dnf).",{"name":2552,"text":2553},"Базовый синтаксис и просмотр всех открытых файлов","Запустите `lsof` без аргументов для списка всех открытых файлов текущего пользователя. Для полной системной картины (всех пользователей) используйте `sudo lsof`. Вывод содержит столбцы: COMMAND, PID, USER, FD, TYPE, DEVICE, SIZE/OFF, NODE, NAME.",{"name":2555,"text":2556},"Поиск файлов, открытых определённым процессом","Чтобы увидеть, какие файлы открыл процесс с PID 1234, выполните `lsof -p 1234`. Это помогает понять активность подозрительного или зависшего процесса. PID можно узнать через `ps aux | grep \u003Cимя_процесса>`.",{"name":2558,"text":2559},"Поиск процессов, открывших конкретный файл или каталог","Чтобы узнать, кто использует файл `/var/log/syslog`, введите `lsof /var/log/syslog`. Для каталога укажите путь: `lsof +D /home/user/`. Опция `+D` рекурсивно проверяет каталог (может быть медленной для больших деревьев).",{"name":2561,"text":2562},"Поиск процесса, слушающего сетевой порт","Для диагностики 'порт занят' используйте `sudo lsof -i :\u003Cпорт>`. Например, `sudo lsof -i :80` покажет, какой процесс (обычно веб-сервер) слушает порт 80. Можно использовать имена служб: `sudo lsof -i :http`.",{"name":2564,"text":2565},"Фильтрация по протоколу (TCP/UDP) и состоянию","Уточните запрос: `sudo lsof -i tcp` покажет только TCP-соединения. `sudo lsof -i udp` — только UDP. Для соединений в состоянии LISTEN: `sudo lsof -i -s tcp:listen`. Это удобно для поиска слушающих сокетов.","PT20M",[2568,2569,2570,2571,2572,2573,2574,2575],"lsof команда linux","как использовать lsof","lsof примеры использования","найти процесс который использует порт","lsof что делает","просмотр открытых файлов linux","кайфы open files linux","диагностика блокировки порта lsof",{},[914,2578,2579],"/errors/linux/port-already-in-use","/guides/linux/systemd-journalctl",{"title":1290,"description":2532},"guides/linux/lsof-command","Команда lsof (list open files) — незаменимый инструмент системного администратора и разработчика для диагностики проблем с файлами, портами и процессами. Это руководство покажет, как эффективно использовать lsof для решения реальных задач.",[915,2584,2585,2586,1301,2587,2588],"sysadmin","troubleshooting","command line","process management","network","YRG3ZuPb1nEUUuYTz6dTFuI3JjY3QElPke4jR5vNCOM"]