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