[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"page-ru-/errors/linux/file-in-use":3,"mdc-ltcg7-key":878,"mdc--y7kjit-key":888,"mdc-k17kzr-key":912,"mdc--74sqc0-key":920,"mdc-7zum9f-key":937,"mdc-ckl4aa-key":961,"mdc-pgi3ho-key":986,"related-/errors/linux/permission-denied,/errors/linux/disk-full,/guides/linux/lsof-command":994},{"id":4,"title":5,"appliesTo":6,"author":11,"body":12,"canonical":817,"code":27,"createdAt":818,"description":819,"difficulty":820,"draft":821,"estimatedTime":822,"extension":823,"faq":824,"howToSteps":837,"howToTotalTime":846,"image":817,"keywords":847,"locale":858,"meta":859,"navigation":219,"path":860,"platform":861,"related":862,"section":866,"seo":867,"severity":868,"stem":869,"summary":870,"tags":871,"twitterCreator":817,"twitterSite":817,"type":876,"updatedAt":818,"__hash__":877},"content_ru/errors/linux/file-in-use.md","Ошибка 'Файл занят' в Linux: причины и способы исправления",[7,8,9,10],"Ubuntu 20.04+","Debian 11+","CentOS 8+","Все дистрибутивы с ядром 3.x+","FixPedia Team",{"type":13,"value":14,"toc":802},"minimark",[15,20,38,41,58,78,82,139,143,152,157,323,340,348,353,477,481,490,594,598,601,662,666,669,681,690,693,697,703,783,787,798],[16,17,19],"h2",{"id":18},"что-означает-ошибка-etxtbsy","Что означает ошибка ETXTBSY",[21,22,23,24,28,29,33,34,37],"p",{},"Ошибка ",[25,26,27],"strong",{},"ETXTBSY"," (часто отображается как ",[30,31,32],"code",{},"Text file busy"," или ",[30,35,36],{},"Device or resource busy",") возникает в Linux, когда вы пытаетесь выполнить операцию с файлом (удалить, изменить, переименовать), но система обнаруживает, что этот файл в данный момент используется активным процессом. Это защитный механизм ядра, предотвращающий повреждение данных или несогласованное состояние.",[21,39,40],{},"Типичные сценарии появления:",[42,43,44,52,55],"ul",{},[45,46,47,48,51],"li",{},"Попытка удалить или перезаписать исполняемый файл (",[30,49,50],{},".exe",", бинарник), который в данный момент запущен.",[45,53,54],{},"Файл открыт в программе (текстовом редакторе, IDE, антивирусе) с блокировкой на запись.",[45,56,57],{},"Файл расположен на сетевой файловой системе (NFS) и заблокирован удалённым процессом.",[21,59,60,61,64,65,64,68,71,72,33,74,77],{},"Симптом: команда ",[30,62,63],{},"rm",", ",[30,66,67],{},"mv",[30,69,70],{},"vim"," или другая завершается с сообщением ",[30,73,32],{},[30,75,76],{},"Resource temporarily unavailable",".",[16,79,81],{"id":80},"причины-возникновения","Причины возникновения",[83,84,85,94,102,112,124],"ol",{},[45,86,87,90,93],{},[25,88,89],{},"Исполняемый файл запущен",[91,92],"br",{},"\nВы пытаетесь удалить или перезаписать бинарный файл или скрипт, который в данный момент выполняется ядром как процесс. Linux не позволяет изменять исполняемые файлы во время их выполнения.",[45,95,96,99,101],{},[25,97,98],{},"Файл открыт другим процессом с эксклюзивной блокировкой",[91,100],{},"\nНекоторые приложения (например, базы данных, редакторы) могут открывать файлы в режиме, запрещающем другие процессы читать или писать в них.",[45,103,104,107,109,110,77],{},[25,105,106],{},"Сетевая файловая система (NFS) блокирует файл",[91,108],{},"\nПри использовании NFS удалённый клиент или сервер может удерживать блокировку на файле, что приводит к локальной ошибке ",[30,111,27],{},[45,113,114,117,119,120,123],{},[25,115,116],{},"Файл используется как разделяемая библиотека",[91,118],{},"\nХотя разделяемые библиотеки (",[30,121,122],{},".so",") обычно могут быть перезаписаны, в редких случаях (например, при активной загрузке в память) ядро может временно блокировать их.",[45,125,126,129,131,132,33,135,138],{},[25,127,128],{},"Антивирус или система мониторинга",[91,130],{},"\nДемоны вроде ",[30,133,134],{},"clamd",[30,136,137],{},"auditd"," могут сканировать файл и временно блокировать его для анализа.",[16,140,142],{"id":141},"способы-решения","Способы решения",[144,145,147,148,151],"h3",{"id":146},"способ-1-использование-lsof-для-поиска-и-ручного-завершения-процесса","Способ 1: Использование ",[30,149,150],{},"lsof"," для поиска и ручного завершения процесса",[21,153,154,156],{},[30,155,150],{}," (list open files) — утилита, которая показывает, какие процессы используют указанный файл.",[83,158,159,243,281,317],{},[45,160,161,167,168],{},[25,162,163,164,166],{},"Установите ",[30,165,150],{},", если его нет",":",[169,170,175],"pre",{"className":171,"code":172,"language":173,"meta":174,"style":174},"language-bash shiki shiki-themes github-light github-dark","# Для Ubuntu/Debian\nsudo apt update && sudo apt install lsof\n\n# Для CentOS/RHEL/Fedora\nsudo yum install lsof   # или dnf install lsof\n","bash","",[30,176,177,186,214,221,227],{"__ignoreMap":174},[178,179,182],"span",{"class":180,"line":181},"line",1,[178,183,185],{"class":184},"sJ8bj","# Для Ubuntu/Debian\n",[178,187,189,193,197,200,204,206,208,211],{"class":180,"line":188},2,[178,190,192],{"class":191},"sScJk","sudo",[178,194,196],{"class":195},"sZZnC"," apt",[178,198,199],{"class":195}," update",[178,201,203],{"class":202},"sVt8B"," && ",[178,205,192],{"class":191},[178,207,196],{"class":195},[178,209,210],{"class":195}," install",[178,212,213],{"class":195}," lsof\n",[178,215,217],{"class":180,"line":216},3,[178,218,220],{"emptyLinePlaceholder":219},true,"\n",[178,222,224],{"class":180,"line":223},4,[178,225,226],{"class":184},"# Для CentOS/RHEL/Fedora\n",[178,228,230,232,235,237,240],{"class":180,"line":229},5,[178,231,192],{"class":191},[178,233,234],{"class":195}," yum",[178,236,210],{"class":195},[178,238,239],{"class":195}," lsof",[178,241,242],{"class":184},"   # или dnf install lsof\n",[45,244,245,167,248,260,262,263,271,273,274,277,278,77],{},[25,246,247],{},"Найдите процесс, удерживающий файл",[169,249,251],{"className":171,"code":250,"language":173,"meta":174,"style":174},"lsof /путь/к/файлу\n",[30,252,253],{"__ignoreMap":174},[178,254,255,257],{"class":180,"line":181},[178,256,150],{"class":191},[178,258,259],{"class":195}," /путь/к/файлу\n",[91,261],{},"Пример вывода:",[169,264,269],{"className":265,"code":267,"language":268},[266],"language-text","COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME\nvim     1234 user   txt    REG    8,1   10240 12345 /home/user/script.sh\n","text",[30,270,267],{"__ignoreMap":174},[91,272],{},"Здесь ",[30,275,276],{},"PID"," (Process ID) — ",[30,279,280],{},"1234",[45,282,283,167,286,300,302,303],{},[25,284,285],{},"Завершите процесс",[169,287,289],{"className":171,"code":288,"language":173,"meta":174,"style":174},"kill 1234\n",[30,290,291],{"__ignoreMap":174},[178,292,293,297],{"class":180,"line":181},[178,294,296],{"class":295},"sj4cs","kill",[178,298,299],{"class":295}," 1234\n",[91,301],{},"Если процесс не реагирует на обычный сигнал, используйте принудительное завершение:",[169,304,306],{"className":171,"code":305,"language":173,"meta":174,"style":174},"kill -9 1234\n",[30,307,308],{"__ignoreMap":174},[178,309,310,312,315],{"class":180,"line":181},[178,311,296],{"class":295},[178,313,314],{"class":295}," -9",[178,316,299],{"class":295},[45,318,319,322],{},[25,320,321],{},"Повторите операцию с файлом"," (удаление, редактирование и т.д.).",[324,325,326],"blockquote",{},[21,327,328,329,332,333,64,336,339],{},"⚠️ ",[25,330,331],{},"Важно",": Не завершайте системные процессы (например, ",[30,334,335],{},"systemd",[30,337,338],{},"sshd",") без понимания последствий. Убедитесь, что PID принадлежит именно тому приложению, которое работает с вашим файлом.",[144,341,343,344,347],{"id":342},"способ-2-использование-fuser-для-быстрого-завершения","Способ 2: Использование ",[30,345,346],{},"fuser"," для быстрого завершения",[21,349,350,352],{},[30,351,346],{}," — более агрессивная утилита, которая может сразу завершить все процессы, использующие файл.",[83,354,355,398,418,471],{},[45,356,357,361,362,365,366],{},[25,358,163,359],{},[30,360,346],{}," (обычно входит в пакет ",[30,363,364],{},"psmisc","):",[169,367,369],{"className":171,"code":368,"language":173,"meta":174,"style":174},"sudo apt install psmisc   # Ubuntu/Debian\nsudo yum install psmisc   # CentOS/RHEL\n",[30,370,371,385],{"__ignoreMap":174},[178,372,373,375,377,379,382],{"class":180,"line":181},[178,374,192],{"class":191},[178,376,196],{"class":195},[178,378,210],{"class":195},[178,380,381],{"class":195}," psmisc",[178,383,384],{"class":184},"   # Ubuntu/Debian\n",[178,386,387,389,391,393,395],{"class":180,"line":188},[178,388,192],{"class":191},[178,390,234],{"class":195},[178,392,210],{"class":195},[178,394,381],{"class":195},[178,396,397],{"class":184},"   # CentOS/RHEL\n",[45,399,400,403,404],{},[25,401,402],{},"Просмотрите процессы"," (опционально):",[169,405,407],{"className":171,"code":406,"language":173,"meta":174,"style":174},"fuser -v /путь/к/файлу\n",[30,408,409],{"__ignoreMap":174},[178,410,411,413,416],{"class":180,"line":181},[178,412,346],{"class":191},[178,414,415],{"class":295}," -v",[178,417,259],{"class":195},[45,419,420,167,423,440,442,443,446,447,450,451,454,455],{},[25,421,422],{},"Завершите процессы автоматически",[169,424,426],{"className":171,"code":425,"language":173,"meta":174,"style":174},"sudo fuser -k /путь/к/файлу\n",[30,427,428],{"__ignoreMap":174},[178,429,430,432,435,438],{"class":180,"line":181},[178,431,192],{"class":191},[178,433,434],{"class":195}," fuser",[178,436,437],{"class":295}," -k",[178,439,259],{"class":195},[91,441],{},"Ключ ",[30,444,445],{},"-k"," отправляет сигнал ",[30,448,449],{},"SIGKILL"," всем процессам, использующим файл. Для более мягкого подхода используйте ",[30,452,453],{},"-TERM"," (по умолчанию):",[169,456,458],{"className":171,"code":457,"language":173,"meta":174,"style":174},"sudo fuser -TERM /путь/к/файлу\n",[30,459,460],{"__ignoreMap":174},[178,461,462,464,466,469],{"class":180,"line":181},[178,463,192],{"class":191},[178,465,434],{"class":195},[178,467,468],{"class":295}," -TERM",[178,470,259],{"class":195},[45,472,473,476],{},[25,474,475],{},"Проверьте, что файл освобождён",", и повторите операцию.",[144,478,480],{"id":479},"способ-3-работа-с-nfs-и-сетевыми-файловыми-системами","Способ 3: Работа с NFS и сетевыми файловыми системами",[21,482,483,484,486,487,489],{},"Если файл находится на NFS-шаре, локальные команды ",[30,485,150],{},"/",[30,488,346],{}," могут не увидеть удалённый процесс. Действия:",[83,491,492,512,573],{},[45,493,494,497,498],{},[25,495,496],{},"На клиенте"," (где возникает ошибка) найдите PID:",[169,499,501],{"className":171,"code":500,"language":173,"meta":174,"style":174},"fuser -k /mnt/nfs/файл\n",[30,502,503],{"__ignoreMap":174},[178,504,505,507,509],{"class":180,"line":181},[178,506,346],{"class":191},[178,508,437],{"class":295},[178,510,511],{"class":195}," /mnt/nfs/файл\n",[45,513,514,517,518,551,553,554],{},[25,515,516],{},"Если не помогает",", переподключите NFS-шару:",[169,519,521],{"className":171,"code":520,"language":173,"meta":174,"style":174},"sudo umount /mnt/nfs\nsudo mount -t nfs сервер:/экспорт /mnt/nfs\n",[30,522,523,533],{"__ignoreMap":174},[178,524,525,527,530],{"class":180,"line":181},[178,526,192],{"class":191},[178,528,529],{"class":195}," umount",[178,531,532],{"class":195}," /mnt/nfs\n",[178,534,535,537,540,543,546,549],{"class":180,"line":188},[178,536,192],{"class":191},[178,538,539],{"class":195}," mount",[178,541,542],{"class":295}," -t",[178,544,545],{"class":195}," nfs",[178,547,548],{"class":195}," сервер:/экспорт",[178,550,532],{"class":195},[91,552],{},"Или принудительно перемонтируйте (если поддерживается):",[169,555,557],{"className":171,"code":556,"language":173,"meta":174,"style":174},"sudo mount -o remount /mnt/nfs\n",[30,558,559],{"__ignoreMap":174},[178,560,561,563,565,568,571],{"class":180,"line":181},[178,562,192],{"class":191},[178,564,539],{"class":195},[178,566,567],{"class":295}," -o",[178,569,570],{"class":195}," remount",[178,572,532],{"class":195},[45,574,575,578,579,591,593],{},[25,576,577],{},"На сервере NFS"," проверьте, не держит ли файл какой-либо процесс:",[169,580,582],{"className":171,"code":581,"language":173,"meta":174,"style":174},"lsof /экспорт/файл\n",[30,583,584],{"__ignoreMap":174},[178,585,586,588],{"class":180,"line":181},[178,587,150],{"class":191},[178,589,590],{"class":195}," /экспорт/файл\n",[91,592],{},"И завершите его.",[144,595,597],{"id":596},"способ-4-ожидание-освобождения-файла","Способ 4: Ожидание освобождения файла",[21,599,600],{},"Иногда файл блокируется на короткое время (например, при записи логов или кэшировании). Если процесс завершится сам:",[83,602,603,609],{},[45,604,605,608],{},[25,606,607],{},"Подождите несколько секунд"," и повторите операцию.",[45,610,611,614,615],{},[25,612,613],{},"Используйте цикл ожидания"," (для скриптов):\n",[169,616,618],{"className":171,"code":617,"language":173,"meta":174,"style":174},"while lsof /путь/к/файлу >/dev/null; do sleep 1; done\necho \"Файл освобождён\"\n",[30,619,620,654],{"__ignoreMap":174},[178,621,622,626,628,631,634,637,640,643,646,649,651],{"class":180,"line":181},[178,623,625],{"class":624},"szBVR","while",[178,627,239],{"class":191},[178,629,630],{"class":195}," /путь/к/файлу",[178,632,633],{"class":624}," >",[178,635,636],{"class":195},"/dev/null",[178,638,639],{"class":202},"; ",[178,641,642],{"class":624},"do",[178,644,645],{"class":191}," sleep",[178,647,648],{"class":295}," 1",[178,650,639],{"class":202},[178,652,653],{"class":624},"done\n",[178,655,656,659],{"class":180,"line":188},[178,657,658],{"class":295},"echo",[178,660,661],{"class":195}," \"Файл освобождён\"\n",[144,663,665],{"id":664},"способ-5-перезагрузка-системы-крайний-случай","Способ 5: Перезагрузка системы (крайний случай)",[21,667,668],{},"Если ни один из способов не сработал, а файл критически важен и не может ждать, перезагрузите компьютер. Это гарантированно освободит все ресурсы.",[169,670,672],{"className":171,"code":671,"language":173,"meta":174,"style":174},"sudo reboot\n",[30,673,674],{"__ignoreMap":174},[178,675,676,678],{"class":180,"line":181},[178,677,192],{"class":191},[178,679,680],{"class":195}," reboot\n",[324,682,683],{},[21,684,685,686,689],{},"💡 ",[25,687,688],{},"Совет",": После перезагрузки проверьте, не запускается ли процесс, блокирующий файл, автоматически (через systemd, cron). Отключите его, если нужно.",[691,692],"in-article-ad",{},[16,694,696],{"id":695},"профилактика","Профилактика",[21,698,699,700,702],{},"Чтобы избежать ошибки ",[25,701,27],{}," в будущем:",[42,704,705,711,723,729,769],{},[45,706,707,710],{},[25,708,709],{},"Закрывайте файлы после использования"," — не оставляйте открытыми в редакторах или других программах.",[45,712,713,716,717,33,719,722],{},[25,714,715],{},"Не запускайте один и тот же исполняемый файл несколько раз одновременно",", если он не предназначен для этого (например, через ",[30,718,335],{},[30,720,721],{},"cron",").",[45,724,725,728],{},[25,726,727],{},"Используйте lock-файлы"," в скриптах и приложениях для координации доступа к ресурсам.",[45,730,731,734,735],{},[25,732,733],{},"При обновлении бинарных файлов"," останавливайте связанные сервисы:\n",[169,736,738],{"className":171,"code":737,"language":173,"meta":174,"style":174},"sudo systemctl stop имя_сервиса\n# Замените файл\nsudo systemctl start имя_сервиса\n",[30,739,740,753,758],{"__ignoreMap":174},[178,741,742,744,747,750],{"class":180,"line":181},[178,743,192],{"class":191},[178,745,746],{"class":195}," systemctl",[178,748,749],{"class":195}," stop",[178,751,752],{"class":195}," имя_сервиса\n",[178,754,755],{"class":180,"line":188},[178,756,757],{"class":184},"# Замените файл\n",[178,759,760,762,764,767],{"class":180,"line":216},[178,761,192],{"class":191},[178,763,746],{"class":195},[178,765,766],{"class":195}," start",[178,768,752],{"class":195},[45,770,771,774,775,778,779,782],{},[25,772,773],{},"Для NFS"," настройте параметры монтирования с опцией ",[30,776,777],{},"noac"," (no attribute caching) или ",[30,780,781],{},"actimeo=0",", если блокировки возникают часто.",[16,784,786],{"id":785},"заключение","Заключение",[21,788,23,789,791,792,794,795,797],{},[25,790,27],{}," — это сигнал о том, что файл временно недоступен из-за активности процесса. С помощью утилит ",[30,793,150],{}," и ",[30,796,346],{}," вы можете быстро идентифицировать и устранить блокировку. В большинстве случаев достаточно одного из первых двух способов. Помните о безопасности: завершайте только те процессы, которые точно не являются системными критическими.",[799,800,801],"style",{},"html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}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 pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}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}",{"title":174,"searchDepth":188,"depth":188,"links":803},[804,805,806,815,816],{"id":18,"depth":188,"text":19},{"id":80,"depth":188,"text":81},{"id":141,"depth":188,"text":142,"children":807},[808,810,812,813,814],{"id":146,"depth":216,"text":809},"Способ 1: Использование lsof для поиска и ручного завершения процесса",{"id":342,"depth":216,"text":811},"Способ 2: Использование fuser для быстрого завершения",{"id":479,"depth":216,"text":480},{"id":596,"depth":216,"text":597},{"id":664,"depth":216,"text":665},{"id":695,"depth":188,"text":696},{"id":785,"depth":188,"text":786},null,"2026-02-16 13:57:41","Не можете удалить или изменить файл в Linux? Узнайте, почему возникает ошибка 'Resource busy' и как исправить за 5 минут. Пошаговая инструкция с примерами команд.","easy",false,"5-10 мин","md",[825,828,831,834],{"answer":826,"question":827},"Ошибка возникает, когда какой-либо процесс использует файл (например, открыл его для чтения или записи) и блокирует операции с ним.","Почему возникает ошибка 'Файл занят' в Linux?",{"answer":829,"question":830},"Используйте команды `lsof /путь/к/файлу` или `fuser /путь/к/файлу`, чтобы увидеть PID процесса.","Как найти процесс, который использует файл?",{"answer":832,"question":833},"Если процесс критический для системы, попробуйте перезапустить его корректно или дождитесь, когда он освободит файл сам. В крайнем случае — перезагрузка.","Что делать, если процесс нельзя завершить?",{"answer":835,"question":836},"Да, команда `fuser -k /путь/к/файлу` завершит все процессы, использующие файл.","Можно ли автоматически убить процесс, блокирующий файл?",[838,841,844],{"name":839,"text":840},"Определите процесс, блокирующий файл","Используйте команду `lsof | grep имя_файла` или `fuser имя_файла`, чтобы найти PID процесса, который использует файл.",{"name":842,"text":843},"Завершите найденный процесс","Отправьте сигнал завершения процессу с помощью `kill PID` или используйте `fuser -k имя_файла` для автоматического завершения.",{"name":321,"text":845},"После освобождения файла повторите нужное действие (удаление, редактирование и т.д.).","PT10M",[848,849,850,851,852,853,854,855,856,857],"файл занят linux","resource busy linux","text file busy","удалить файл занят","lsof команда","fuser kill","ошибка удаления файла linux","файл используется процессом","как освободить файл в linux","device or resource busy","ru_RU",{},"/errors/linux/file-in-use","linux",[863,864,865],"/errors/linux/permission-denied","/errors/linux/disk-full","/guides/linux/lsof-command","Ошибки Linux",{"title":5,"description":819},"medium","errors/linux/file-in-use","Ошибка 'Файл занят' возникает, когда процесс блокирует файл. В статье вы узнаете, как найти и завершить этот процесс, чтобы освободить файл.",[872,873,150,346,874,875],"ошибки linux","file-in-use","process management","управление файлами","error","68DcjEr0Z6ROwy2KksTA0SjoreMBjZ0JNQlzYMYtwJ4",{"data":879,"body":880},{},{"type":881,"children":882},"root",[883],{"type":884,"tag":21,"props":885,"children":886},"element",{},[887],{"type":268,"value":826},{"data":889,"body":890},{},{"type":881,"children":891},[892],{"type":884,"tag":21,"props":893,"children":894},{},[895,897,903,904,910],{"type":268,"value":896},"Используйте команды ",{"type":884,"tag":30,"props":898,"children":900},{"className":899},[],[901],{"type":268,"value":902},"lsof /путь/к/файлу",{"type":268,"value":33},{"type":884,"tag":30,"props":905,"children":907},{"className":906},[],[908],{"type":268,"value":909},"fuser /путь/к/файлу",{"type":268,"value":911},", чтобы увидеть PID процесса.",{"data":913,"body":914},{},{"type":881,"children":915},[916],{"type":884,"tag":21,"props":917,"children":918},{},[919],{"type":268,"value":832},{"data":921,"body":922},{},{"type":881,"children":923},[924],{"type":884,"tag":21,"props":925,"children":926},{},[927,929,935],{"type":268,"value":928},"Да, команда ",{"type":884,"tag":30,"props":930,"children":932},{"className":931},[],[933],{"type":268,"value":934},"fuser -k /путь/к/файлу",{"type":268,"value":936}," завершит все процессы, использующие файл.",{"data":938,"body":939},{},{"type":881,"children":940},[941],{"type":884,"tag":21,"props":942,"children":943},{},[944,946,952,953,959],{"type":268,"value":945},"Используйте команду ",{"type":884,"tag":30,"props":947,"children":949},{"className":948},[],[950],{"type":268,"value":951},"lsof | grep имя_файла",{"type":268,"value":33},{"type":884,"tag":30,"props":954,"children":956},{"className":955},[],[957],{"type":268,"value":958},"fuser имя_файла",{"type":268,"value":960},", чтобы найти PID процесса, который использует файл.",{"data":962,"body":963},{},{"type":881,"children":964},[965],{"type":884,"tag":21,"props":966,"children":967},{},[968,970,976,978,984],{"type":268,"value":969},"Отправьте сигнал завершения процессу с помощью ",{"type":884,"tag":30,"props":971,"children":973},{"className":972},[],[974],{"type":268,"value":975},"kill PID",{"type":268,"value":977}," или используйте ",{"type":884,"tag":30,"props":979,"children":981},{"className":980},[],[982],{"type":268,"value":983},"fuser -k имя_файла",{"type":268,"value":985}," для автоматического завершения.",{"data":987,"body":988},{},{"type":881,"children":989},[990],{"type":884,"tag":21,"props":991,"children":992},{},[993],{"type":268,"value":845},[995,1242,2485],{"id":996,"title":997,"appliesTo":998,"author":11,"body":1003,"canonical":817,"code":1013,"createdAt":1226,"description":1227,"difficulty":868,"draft":821,"estimatedTime":1228,"extension":823,"faq":817,"howToSteps":817,"howToTotalTime":817,"image":817,"keywords":817,"locale":817,"meta":1229,"navigation":219,"path":863,"platform":861,"related":1230,"section":817,"seo":1234,"severity":868,"stem":1235,"summary":1236,"tags":1237,"twitterCreator":817,"twitterSite":817,"type":876,"updatedAt":1226,"__hash__":1241},"content_ru/errors/linux/permission-denied.md","Permission denied в Linux: отказано в доступе",[999,1000,1001,1002],"Ubuntu","Debian","Fedora","Arch Linux",{"type":13,"value":1004,"toc":1218},[1005,1015,1018,1022,1038,1040,1044,1047,1059,1062,1076,1078,1082,1085,1106,1108,1112,1115,1131,1134,1151,1153,1157,1160,1175,1178,1195,1197,1201,1215],[21,1006,23,1007,1010,1011,1014],{},[25,1008,1009],{},"Permission denied"," (код ",[30,1012,1013],{},"EACCES",") в Linux означает, что текущий пользователь не имеет необходимых прав для выполнения операции. Она может возникать при запуске скриптов, открытии файлов или попытке изменить системные каталоги.",[1016,1017],"hr",{},[16,1019,1021],{"id":1020},"основные-причины","Основные причины",[42,1023,1024,1027,1030,1035],{},[45,1025,1026],{},"Недостаточные права на файл или папку",[45,1028,1029],{},"Отсутствует бит выполнения у скрипта",[45,1031,1032,1033],{},"Попытка доступа к системным каталогам без ",[30,1034,192],{},[45,1036,1037],{},"Неверный владелец файла",[1016,1039],{},[16,1041,1043],{"id":1042},"способ-1-запуск-с-sudo","Способ 1: Запуск с sudo",[21,1045,1046],{},"Если операция требует прав администратора:",[169,1048,1050],{"className":171,"code":1049,"language":173,"meta":174,"style":174},"sudo команда\n",[30,1051,1052],{"__ignoreMap":174},[178,1053,1054,1056],{"class":180,"line":181},[178,1055,192],{"class":191},[178,1057,1058],{"class":195}," команда\n",[21,1060,1061],{},"Пример:",[169,1063,1065],{"className":171,"code":1064,"language":173,"meta":174,"style":174},"sudo apt update\n",[30,1066,1067],{"__ignoreMap":174},[178,1068,1069,1071,1073],{"class":180,"line":181},[178,1070,192],{"class":191},[178,1072,196],{"class":195},[178,1074,1075],{"class":195}," update\n",[1016,1077],{},[16,1079,1081],{"id":1080},"способ-2-добавление-права-на-выполнение","Способ 2: Добавление права на выполнение",[21,1083,1084],{},"Если ошибка возникает при запуске скрипта:",[169,1086,1088],{"className":171,"code":1087,"language":173,"meta":174,"style":174},"chmod +x script.sh\n./script.sh\n",[30,1089,1090,1101],{"__ignoreMap":174},[178,1091,1092,1095,1098],{"class":180,"line":181},[178,1093,1094],{"class":191},"chmod",[178,1096,1097],{"class":195}," +x",[178,1099,1100],{"class":195}," script.sh\n",[178,1102,1103],{"class":180,"line":188},[178,1104,1105],{"class":191},"./script.sh\n",[1016,1107],{},[16,1109,1111],{"id":1110},"способ-3-проверка-прав-доступа","Способ 3: Проверка прав доступа",[21,1113,1114],{},"Посмотрите текущие права:",[169,1116,1118],{"className":171,"code":1117,"language":173,"meta":174,"style":174},"ls -l filename\n",[30,1119,1120],{"__ignoreMap":174},[178,1121,1122,1125,1128],{"class":180,"line":181},[178,1123,1124],{"class":191},"ls",[178,1126,1127],{"class":295}," -l",[178,1129,1130],{"class":195}," filename\n",[21,1132,1133],{},"Если нужно изменить владельца:",[169,1135,1137],{"className":171,"code":1136,"language":173,"meta":174,"style":174},"sudo chown user:user filename\n",[30,1138,1139],{"__ignoreMap":174},[178,1140,1141,1143,1146,1149],{"class":180,"line":181},[178,1142,192],{"class":191},[178,1144,1145],{"class":195}," chown",[178,1147,1148],{"class":195}," user:user",[178,1150,1130],{"class":195},[1016,1152],{},[16,1154,1156],{"id":1155},"способ-4-проверка-прав-на-каталог","Способ 4: Проверка прав на каталог",[21,1158,1159],{},"Даже если файл доступен, родительский каталог может быть закрыт:",[169,1161,1163],{"className":171,"code":1162,"language":173,"meta":174,"style":174},"ls -ld directory\n",[30,1164,1165],{"__ignoreMap":174},[178,1166,1167,1169,1172],{"class":180,"line":181},[178,1168,1124],{"class":191},[178,1170,1171],{"class":295}," -ld",[178,1173,1174],{"class":195}," directory\n",[21,1176,1177],{},"При необходимости измените права:",[169,1179,1181],{"className":171,"code":1180,"language":173,"meta":174,"style":174},"sudo chmod 755 directory\n",[30,1182,1183],{"__ignoreMap":174},[178,1184,1185,1187,1190,1193],{"class":180,"line":181},[178,1186,192],{"class":191},[178,1188,1189],{"class":195}," chmod",[178,1191,1192],{"class":295}," 755",[178,1194,1174],{"class":195},[1016,1196],{},[16,1198,1200],{"id":1199},"итог","Итог",[21,1202,23,1203,1205,1206,1208,1209,794,1211,1214],{},[30,1204,1013],{}," в Linux почти всегда связана с правами доступа. Использование ",[30,1207,192],{},", корректная настройка ",[30,1210,1094],{},[30,1212,1213],{},"chown"," обычно полностью решают проблему.",[799,1216,1217],{},"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}",{"title":174,"searchDepth":188,"depth":188,"links":1219},[1220,1221,1222,1223,1224,1225],{"id":1020,"depth":188,"text":1021},{"id":1042,"depth":188,"text":1043},{"id":1080,"depth":188,"text":1081},{"id":1110,"depth":188,"text":1111},{"id":1155,"depth":188,"text":1156},{"id":1199,"depth":188,"text":1200},"2026-02-12","Как исправить ошибку Permission denied в Linux. Пошаговые решения для файлов, папок и исполняемых скриптов.","5-15 мин",{},[1231,1232,1233],"/errors/linux/command-not-found","/errors/linux/no-space-left-on-device","/errors/linux/read-only-file-system",{"title":997,"description":1227},"errors/linux/permission-denied","Ошибка EACCES (Permission denied) возникает, когда у пользователя недостаточно прав для доступа к файлу, папке или выполнению команды.",[1238,1239,1240,1094,192],"Linux","Ошибка","Права доступа","xmflm-_Ps3Z40r-nDeiWmpOlPxv6BSr1lHoU-O5QjO4",{"id":1243,"title":1244,"appliesTo":1245,"author":11,"body":1249,"canonical":817,"code":1266,"createdAt":2430,"description":2431,"difficulty":820,"draft":821,"estimatedTime":2432,"extension":823,"faq":2433,"howToSteps":2446,"howToTotalTime":2462,"image":817,"keywords":2463,"locale":858,"meta":2472,"navigation":219,"path":864,"platform":861,"related":2473,"section":866,"seo":2475,"severity":2476,"stem":2477,"summary":2478,"tags":2479,"twitterCreator":817,"twitterSite":817,"type":876,"updatedAt":2430,"__hash__":2484},"content_ru/errors/linux/disk-full.md","Ошибка 'No space left on device' в Linux: причины и 5 способов исправить",[1246,8,9,1247,1248,1002],"Ubuntu 22.04+","RHEL 9+","Fedora 36+",{"type":13,"value":1250,"toc":2417},[1251,1258,1268,1271,1301,1303,1310,1368,1370,1374,1382,1649,1651,1655,1668,1770,1774,1779,1914,1918,2063,2067,2070,2207,2209,2414],[16,1252,1254,1255],{"id":1253},"что-означает-ошибка-no-space-left-on-device","Что означает ошибка ",[30,1256,1257],{},"No space left on device",[21,1259,23,1260,1010,1264,1267],{},[25,1261,1262],{},[30,1263,1257],{},[30,1265,1266],{},"ENOSPC",") — это системное сообщение от ядра Linux, которое означает, что операция записи на диск не может быть выполнена из-за полного заполнения целевой файловой системы. Она возникает в консоли или в логах приложений (например, веб-сервера, базы данных, системы сборки) при попытке создать, изменить или переместить файл.",[21,1269,1270],{},"Типичные симптомы:",[42,1272,1273,1289,1292,1298],{},[45,1274,1275,1276,1279,1280,486,1283,1286,1287,77],{},"При запуске команды ",[30,1277,1278],{},"touch newfile"," или установке пакета через ",[30,1281,1282],{},"apt",[30,1284,1285],{},"yum"," появляется сообщение ",[30,1288,1257],{},[45,1290,1291],{},"Сбои в работе служб, которые пишут логи или данные (например, MySQL, PostgreSQL, Docker).",[45,1293,1294,1295,77],{},"Веб-сервер (Nginx/Apache) возвращает ошибку 500 и пишет в лог ",[30,1296,1297],{},"disk full",[45,1299,1300],{},"Системные уведомления о нехватке места (в GUI-окружениях).",[16,1302,81],{"id":80},[21,1304,1305,1306,1309],{},"Ошибка возникает по одной основной причине — ",[25,1307,1308],{},"физическое или логическое заполнение раздела диска до 100%",". Конкретные сценарии:",[83,1311,1312,1321,1334,1343,1356,1362],{},[45,1313,1314,1320],{},[25,1315,1316,1317,1319],{},"Корневой раздел (",[30,1318,486],{},") заполнен",". Частая проблема на виртуальных серверах или при неаккуратном управлении пакетами и логами.",[45,1322,1323,1333],{},[25,1324,1325,1326,33,1329,1332],{},"Раздел ",[30,1327,1328],{},"/var",[30,1330,1331],{},"/var/log"," разрастается"," из-за неограниченного хранения логов, кэша пакетов или данных приложений (например, базы данных).",[45,1335,1336,1339,1340,1342],{},[25,1337,1338],{},"Множество «висячих» файлов",". Файлы, которые были удалены (",[30,1341,63],{},"), но всё ещё открыты каким-либо процессом. Они продолжают занимать место до завершения процесса.",[45,1344,1345,1348,1349,1352,1353,77],{},[25,1346,1347],{},"Огромные файлы дампов или бэкапов",", оставленные в домашних каталогах (",[30,1350,1351],{},"/home",") или в ",[30,1354,1355],{},"/tmp",[45,1357,1358,1361],{},[25,1359,1360],{},"Раздел подкачки (swap)"," заполнен (редко, но возможно при системной нестабильности).",[45,1363,1364,1367],{},[25,1365,1366],{},"Резервирование места для root",". По умолчанию в ext4/xfs 5% места резервируется для root-пользователя. На больших дисках это может быть гигабайтами, недоступными обычному пользователю.",[16,1369,142],{"id":141},[144,1371,1373],{"id":1372},"способ-1-диагностика-и-поиск-больших-файлов-базовый","Способ 1: Диагностика и поиск больших файлов (базовый)",[21,1375,1376,1377,1381],{},"Первым делом нужно понять, ",[1378,1379,1380],"em",{},"что именно"," занимает место.",[83,1383,1384,1422,1573],{},[45,1385,1386,167,1389,1402,442,1404,1407,1408,1411,1412,1415,1416,64,1418,33,1420,77],{},[25,1387,1388],{},"Проверьте все смонтированные файловые системы",[169,1390,1392],{"className":171,"code":1391,"language":173,"meta":174,"style":174},"df -h\n",[30,1393,1394],{"__ignoreMap":174},[178,1395,1396,1399],{"class":180,"line":181},[178,1397,1398],{"class":191},"df",[178,1400,1401],{"class":295}," -h\n",[91,1403],{},[30,1405,1406],{},"-h"," делает вывод «человекочитаемым» (в МБ, ГБ). Найдите раздел с ",[30,1409,1410],{},"Use%"," равным ",[30,1413,1414],{},"100%"," или близким к этому. Обычно это ",[30,1417,486],{},[30,1419,1351],{},[30,1421,1328],{},[45,1423,1424,1427,1428,365,1430,1476,1519,1521,1524,1525,1531,1533,1534,365,1536],{},[25,1425,1426],{},"Узнайте, какие каталоги в этом разделе самые большие",". Например, если заполнен корень (",[30,1429,486],{},[169,1431,1433],{"className":171,"code":1432,"language":173,"meta":174,"style":174},"sudo du -sh /* 2>/dev/null | sort -rh | head -n 20\n",[30,1434,1435],{"__ignoreMap":174},[178,1436,1437,1439,1442,1445,1448,1451,1454,1456,1459,1462,1465,1467,1470,1473],{"class":180,"line":181},[178,1438,192],{"class":191},[178,1440,1441],{"class":195}," du",[178,1443,1444],{"class":295}," -sh",[178,1446,1447],{"class":195}," /",[178,1449,1450],{"class":295},"*",[178,1452,1453],{"class":624}," 2>",[178,1455,636],{"class":195},[178,1457,1458],{"class":624}," |",[178,1460,1461],{"class":191}," sort",[178,1463,1464],{"class":295}," -rh",[178,1466,1458],{"class":624},[178,1468,1469],{"class":191}," head",[178,1471,1472],{"class":295}," -n",[178,1474,1475],{"class":295}," 20\n",[42,1477,1478,1483,1495,1501,1507,1513],{},[45,1479,1480,1482],{},[30,1481,192],{}," — нужен для доступа ко всем каталогам.",[45,1484,1485,1488,1489,1492,1493,722],{},[30,1486,1487],{},"du -sh"," — вычисляет суммарный размер каталога (",[30,1490,1491],{},"-s",") в удобном формате (",[30,1494,1406],{},[45,1496,1497,1500],{},[30,1498,1499],{},"/*"," — сканируем сразу все каталоги в корне.",[45,1502,1503,1506],{},[30,1504,1505],{},"2>/dev/null"," — подавляем ошибки «Permission denied».",[45,1508,1509,1512],{},[30,1510,1511],{},"sort -rh"," — сортируем по убыванию размера (reverse, human numeric).",[45,1514,1515,1518],{},[30,1516,1517],{},"head -n 20"," — показываем топ-20.",[91,1520],{},[25,1522,1523],{},"Результат",": вы увидите список вроде:",[169,1526,1529],{"className":1527,"code":1528,"language":268},[266],"45G /var\n12G /home\n8.5G    /usr\n...\n",[30,1530,1528],{"__ignoreMap":174},[91,1532],{},"Теперь углубитесь в самый большой каталог (например, ",[30,1535,1328],{},[169,1537,1539],{"className":171,"code":1538,"language":173,"meta":174,"style":174},"sudo du -sh /var/* 2>/dev/null | sort -rh | head -n 10\n",[30,1540,1541],{"__ignoreMap":174},[178,1542,1543,1545,1547,1549,1552,1554,1556,1558,1560,1562,1564,1566,1568,1570],{"class":180,"line":181},[178,1544,192],{"class":191},[178,1546,1441],{"class":195},[178,1548,1444],{"class":295},[178,1550,1551],{"class":195}," /var/",[178,1553,1450],{"class":295},[178,1555,1453],{"class":624},[178,1557,636],{"class":195},[178,1559,1458],{"class":624},[178,1561,1461],{"class":191},[178,1563,1464],{"class":295},[178,1565,1458],{"class":624},[178,1567,1469],{"class":191},[178,1569,1472],{"class":295},[178,1571,1572],{"class":295}," 10\n",[45,1574,1575,1578,1579,1646,1648],{},[25,1576,1577],{},"Поиск конкретных больших файлов"," (если нужно найти файлы, а не каталоги):",[169,1580,1582],{"className":171,"code":1581,"language":173,"meta":174,"style":174},"sudo find / -type f -size +100M -exec ls -lh {} \\; 2>/dev/null | awk '{ print $5, $9 }' | sort -rh | head -n 20\n",[30,1583,1584],{"__ignoreMap":174},[178,1585,1586,1588,1591,1593,1596,1599,1602,1605,1608,1611,1614,1617,1620,1622,1624,1626,1629,1632,1634,1636,1638,1640,1642,1644],{"class":180,"line":181},[178,1587,192],{"class":191},[178,1589,1590],{"class":195}," find",[178,1592,1447],{"class":195},[178,1594,1595],{"class":295}," -type",[178,1597,1598],{"class":195}," f",[178,1600,1601],{"class":295}," -size",[178,1603,1604],{"class":195}," +100M",[178,1606,1607],{"class":295}," -exec",[178,1609,1610],{"class":195}," ls",[178,1612,1613],{"class":295}," -lh",[178,1615,1616],{"class":195}," {}",[178,1618,1619],{"class":295}," \\;",[178,1621,1453],{"class":624},[178,1623,636],{"class":195},[178,1625,1458],{"class":624},[178,1627,1628],{"class":191}," awk",[178,1630,1631],{"class":195}," '{ print $5, $9 }'",[178,1633,1458],{"class":624},[178,1635,1461],{"class":191},[178,1637,1464],{"class":295},[178,1639,1458],{"class":624},[178,1641,1469],{"class":191},[178,1643,1472],{"class":295},[178,1645,1475],{"class":295},[91,1647],{},"Эта команда найдет все файлы размером более 100 МБ и выведет их размер и путь, отсортированные по убыванию.",[691,1650],{},[144,1652,1654],{"id":1653},"способ-2-удаление-висячих-файлов-deleted-but-still-open","Способ 2: Удаление «висячих» файлов (deleted but still open)",[21,1656,1657,1658,1660,1661,1664,1665,1667],{},"Иногда место занято файлами, которые были логически удалены командой ",[30,1659,63],{},", но остаются открытыми работающим процессом. Такие файлы не отображаются в ",[30,1662,1663],{},"du",", но ",[30,1666,1398],{}," показывает, что место занято.",[83,1669,1670,1716,1739],{},[45,1671,1672,167,1675,1694,1696,1697],{},[25,1673,1674],{},"Найдите такие файлы",[169,1676,1678],{"className":171,"code":1677,"language":173,"meta":174,"style":174},"sudo lsof | grep '(deleted)'\n",[30,1679,1680],{"__ignoreMap":174},[178,1681,1682,1684,1686,1688,1691],{"class":180,"line":181},[178,1683,192],{"class":191},[178,1685,239],{"class":195},[178,1687,1458],{"class":624},[178,1689,1690],{"class":191}," grep",[178,1692,1693],{"class":195}," '(deleted)'\n",[91,1695],{},"Или для конкретного раздела:",[169,1698,1700],{"className":171,"code":1699,"language":173,"meta":174,"style":174},"sudo lsof / | grep '(deleted)'\n",[30,1701,1702],{"__ignoreMap":174},[178,1703,1704,1706,1708,1710,1712,1714],{"class":180,"line":181},[178,1705,192],{"class":191},[178,1707,239],{"class":195},[178,1709,1447],{"class":195},[178,1711,1458],{"class":624},[178,1713,1690],{"class":191},[178,1715,1693],{"class":195},[45,1717,1718,1721,1722,1728,1730,1731,1734,1735,1738],{},[25,1719,1720],{},"В выводе"," вы увидите что-то вроде:",[169,1723,1726],{"className":1724,"code":1725,"language":268},[266],"COMMAND   PID   USER   FD   TYPE DEVICE SIZE/OFF   NODE NAME\nmysqld   1234   mysql   8w   REG  253,0   10G 1234567 /var/lib/mysql/ibdata1 (deleted)\n",[30,1727,1725],{"__ignoreMap":174},[91,1729],{},"Здесь файл ",[30,1732,1733],{},"/var/lib/mysql/ibdata1"," размером 10 ГБ удалён, но всё ещё используется процессом ",[30,1736,1737],{},"mysqld"," (PID 1234).",[45,1740,1741,1744,1745],{},[25,1742,1743],{},"Освободите место",". Есть два пути:",[42,1746,1747,1756],{},[45,1748,1749,1752,1753,77],{},[25,1750,1751],{},"Перезапустите процесс"," (если это возможно без потери данных): ",[30,1754,1755],{},"sudo systemctl restart mysql",[45,1757,1758,1761,1762,1765,1766,1769],{},[25,1759,1760],{},"Усеките файл"," (более агрессивно, но иногда необходимо): ",[30,1763,1764],{},"sudo cat /dev/null > /proc/1234/fd/8",". Это обнулит файловый дескриптор. ",[25,1767,1768],{},"Внимание",": это может привести к corruption данных в приложении! Используйте только если уверены, что процесс может пересоздать файл (например, лог-файл).",[144,1771,1773],{"id":1772},"способ-3-очистка-кэша-пакетного-менеджера-и-старых-ядер","Способ 3: Очистка кэша пакетного менеджера и старых ядер",[21,1775,1776,1777,77],{},"Системные пакетные менеджеры и обновления ядра — частые виновники заполнения ",[30,1778,1328],{},[42,1780,1781,1848],{},[45,1782,1783,167,1786],{},[25,1784,1785],{},"Для Debian/Ubuntu",[169,1787,1789],{"className":171,"code":1788,"language":173,"meta":174,"style":174},"# Очистка кэша скачанных .deb пакетов\nsudo apt-get clean\n\n# Удаление старых, ненужных пакетов и ядер\nsudo apt-get autoremove --purge\n\n# Дополнительно: удаление старых версий пакетов из кэша (если clean не сработал)\nsudo apt-get autoclean\n",[30,1790,1791,1796,1806,1810,1815,1827,1832,1838],{"__ignoreMap":174},[178,1792,1793],{"class":180,"line":181},[178,1794,1795],{"class":184},"# Очистка кэша скачанных .deb пакетов\n",[178,1797,1798,1800,1803],{"class":180,"line":188},[178,1799,192],{"class":191},[178,1801,1802],{"class":195}," apt-get",[178,1804,1805],{"class":195}," clean\n",[178,1807,1808],{"class":180,"line":216},[178,1809,220],{"emptyLinePlaceholder":219},[178,1811,1812],{"class":180,"line":223},[178,1813,1814],{"class":184},"# Удаление старых, ненужных пакетов и ядер\n",[178,1816,1817,1819,1821,1824],{"class":180,"line":229},[178,1818,192],{"class":191},[178,1820,1802],{"class":195},[178,1822,1823],{"class":195}," autoremove",[178,1825,1826],{"class":295}," --purge\n",[178,1828,1830],{"class":180,"line":1829},6,[178,1831,220],{"emptyLinePlaceholder":219},[178,1833,1835],{"class":180,"line":1834},7,[178,1836,1837],{"class":184},"# Дополнительно: удаление старых версий пакетов из кэша (если clean не сработал)\n",[178,1839,1841,1843,1845],{"class":180,"line":1840},8,[178,1842,192],{"class":191},[178,1844,1802],{"class":195},[178,1846,1847],{"class":195}," autoclean\n",[45,1849,1850,167,1853],{},[25,1851,1852],{},"Для RHEL/CentOS/Fedora",[169,1854,1856],{"className":171,"code":1855,"language":173,"meta":174,"style":174},"# Очистка всего кэша yum/dnf\nsudo yum clean all   # для CentOS 7\nsudo dnf clean all  # для CentOS 8+/Fedora\n\n# Удаление старых ядер (осторожно! оставьте как минимум 2: текущий и предыдущий)\nsudo package-cleanup --oldkernels --count=2\n",[30,1857,1858,1863,1878,1892,1896,1901],{"__ignoreMap":174},[178,1859,1860],{"class":180,"line":181},[178,1861,1862],{"class":184},"# Очистка всего кэша yum/dnf\n",[178,1864,1865,1867,1869,1872,1875],{"class":180,"line":188},[178,1866,192],{"class":191},[178,1868,234],{"class":195},[178,1870,1871],{"class":195}," clean",[178,1873,1874],{"class":195}," all",[178,1876,1877],{"class":184},"   # для CentOS 7\n",[178,1879,1880,1882,1885,1887,1889],{"class":180,"line":216},[178,1881,192],{"class":191},[178,1883,1884],{"class":195}," dnf",[178,1886,1871],{"class":195},[178,1888,1874],{"class":195},[178,1890,1891],{"class":184},"  # для CentOS 8+/Fedora\n",[178,1893,1894],{"class":180,"line":223},[178,1895,220],{"emptyLinePlaceholder":219},[178,1897,1898],{"class":180,"line":229},[178,1899,1900],{"class":184},"# Удаление старых ядер (осторожно! оставьте как минимум 2: текущий и предыдущий)\n",[178,1902,1903,1905,1908,1911],{"class":180,"line":1829},[178,1904,192],{"class":191},[178,1906,1907],{"class":195}," package-cleanup",[178,1909,1910],{"class":295}," --oldkernels",[178,1912,1913],{"class":295}," --count=2\n",[144,1915,1917],{"id":1916},"способ-4-очистка-системных-логов-и-временных-файлов","Способ 4: Очистка системных логов и временных файлов",[83,1919,1920,1983],{},[45,1921,1922,1925,1926,1929,1930],{},[25,1923,1924],{},"Очистка текущих логов"," (если ",[30,1927,1928],{},"logrotate"," не настроен или сломан):",[169,1931,1933],{"className":171,"code":1932,"language":173,"meta":174,"style":174},"# Очистка основного системного лога (обычно самый большой)\nsudo sh -c 'cat /dev/null > /var/log/syslog'\n# Для journald (systemd-логи) лучше использовать встроенную утилиту\nsudo journalctl --vacuum-time=3d  # оставить логи только за последние 3 дня\nsudo journalctl --vacuum-size=100M  # оставить не более 100 МБ\n",[30,1934,1935,1940,1953,1958,1971],{"__ignoreMap":174},[178,1936,1937],{"class":180,"line":181},[178,1938,1939],{"class":184},"# Очистка основного системного лога (обычно самый большой)\n",[178,1941,1942,1944,1947,1950],{"class":180,"line":188},[178,1943,192],{"class":191},[178,1945,1946],{"class":195}," sh",[178,1948,1949],{"class":295}," -c",[178,1951,1952],{"class":195}," 'cat /dev/null > /var/log/syslog'\n",[178,1954,1955],{"class":180,"line":216},[178,1956,1957],{"class":184},"# Для journald (systemd-логи) лучше использовать встроенную утилиту\n",[178,1959,1960,1962,1965,1968],{"class":180,"line":223},[178,1961,192],{"class":191},[178,1963,1964],{"class":195}," journalctl",[178,1966,1967],{"class":295}," --vacuum-time=3d",[178,1969,1970],{"class":184},"  # оставить логи только за последние 3 дня\n",[178,1972,1973,1975,1977,1980],{"class":180,"line":229},[178,1974,192],{"class":191},[178,1976,1964],{"class":195},[178,1978,1979],{"class":295}," --vacuum-size=100M",[178,1981,1982],{"class":184},"  # оставить не более 100 МБ\n",[45,1984,1985,167,1988],{},[25,1986,1987],{},"Очистка временных файлов",[169,1989,1991],{"className":171,"code":1990,"language":173,"meta":174,"style":174},"# Очистка /tmp (убедитесь, что там нет важных файлов!)\nsudo rm -rf /tmp/*\nsudo rm -rf /var/tmp/*\n\n# Очистка кэша браузеров (если это рабочая станция)\nrm -rf ~/.cache/mozilla/firefox/*.default/cache2/*\nrm -rf ~/.cache/google-chrome/Default/Cache/*\n",[30,1992,1993,1998,2014,2027,2031,2036,2052],{"__ignoreMap":174},[178,1994,1995],{"class":180,"line":181},[178,1996,1997],{"class":184},"# Очистка /tmp (убедитесь, что там нет важных файлов!)\n",[178,1999,2000,2002,2005,2008,2011],{"class":180,"line":188},[178,2001,192],{"class":191},[178,2003,2004],{"class":195}," rm",[178,2006,2007],{"class":295}," -rf",[178,2009,2010],{"class":195}," /tmp/",[178,2012,2013],{"class":295},"*\n",[178,2015,2016,2018,2020,2022,2025],{"class":180,"line":216},[178,2017,192],{"class":191},[178,2019,2004],{"class":195},[178,2021,2007],{"class":295},[178,2023,2024],{"class":195}," /var/tmp/",[178,2026,2013],{"class":295},[178,2028,2029],{"class":180,"line":223},[178,2030,220],{"emptyLinePlaceholder":219},[178,2032,2033],{"class":180,"line":229},[178,2034,2035],{"class":184},"# Очистка кэша браузеров (если это рабочая станция)\n",[178,2037,2038,2040,2042,2045,2047,2050],{"class":180,"line":1829},[178,2039,63],{"class":191},[178,2041,2007],{"class":295},[178,2043,2044],{"class":195}," ~/.cache/mozilla/firefox/",[178,2046,1450],{"class":295},[178,2048,2049],{"class":195},".default/cache2/",[178,2051,2013],{"class":295},[178,2053,2054,2056,2058,2061],{"class":180,"line":1834},[178,2055,63],{"class":191},[178,2057,2007],{"class":295},[178,2059,2060],{"class":195}," ~/.cache/google-chrome/Default/Cache/",[178,2062,2013],{"class":295},[144,2064,2066],{"id":2065},"способ-5-работа-с-docker-если-используется","Способ 5: Работа с Docker (если используется)",[21,2068,2069],{},"Docker — известный «пожиратель» места из-за образов, контейнеров и volumes.",[83,2071,2072,2129,2189],{},[45,2073,2074,167,2077],{},[25,2075,2076],{},"Удалите неиспользуемые образы, контейнеры, сети и тома",[169,2078,2080],{"className":171,"code":2079,"language":173,"meta":174,"style":174},"# Удалить ВСЁ, что не используется (осторожно!)\ndocker system prune -a --volumes\n\n# Более безопасно: сначала посмотреть, что будет удалено\ndocker system prune -a --volumes --dry-run\n",[30,2081,2082,2087,2104,2108,2113],{"__ignoreMap":174},[178,2083,2084],{"class":180,"line":181},[178,2085,2086],{"class":184},"# Удалить ВСЁ, что не используется (осторожно!)\n",[178,2088,2089,2092,2095,2098,2101],{"class":180,"line":188},[178,2090,2091],{"class":191},"docker",[178,2093,2094],{"class":195}," system",[178,2096,2097],{"class":195}," prune",[178,2099,2100],{"class":295}," -a",[178,2102,2103],{"class":295}," --volumes\n",[178,2105,2106],{"class":180,"line":216},[178,2107,220],{"emptyLinePlaceholder":219},[178,2109,2110],{"class":180,"line":223},[178,2111,2112],{"class":184},"# Более безопасно: сначала посмотреть, что будет удалено\n",[178,2114,2115,2117,2119,2121,2123,2126],{"class":180,"line":229},[178,2116,2091],{"class":191},[178,2118,2094],{"class":195},[178,2120,2097],{"class":195},[178,2122,2100],{"class":295},[178,2124,2125],{"class":295}," --volumes",[178,2127,2128],{"class":295}," --dry-run\n",[45,2130,2131,167,2134],{},[25,2132,2133],{},"Очистите конкретные ресурсы",[169,2135,2137],{"className":171,"code":2136,"language":173,"meta":174,"style":174},"docker image prune -a          # все неиспользуемые образы\ndocker container prune        # остановленные контейнеры\ndocker volume prune           # неиспользуемые тома\ndocker network prune          # неиспользуемые сети\n",[30,2138,2139,2153,2165,2177],{"__ignoreMap":174},[178,2140,2141,2143,2146,2148,2150],{"class":180,"line":181},[178,2142,2091],{"class":191},[178,2144,2145],{"class":195}," image",[178,2147,2097],{"class":195},[178,2149,2100],{"class":295},[178,2151,2152],{"class":184},"          # все неиспользуемые образы\n",[178,2154,2155,2157,2160,2162],{"class":180,"line":188},[178,2156,2091],{"class":191},[178,2158,2159],{"class":195}," container",[178,2161,2097],{"class":195},[178,2163,2164],{"class":184},"        # остановленные контейнеры\n",[178,2166,2167,2169,2172,2174],{"class":180,"line":216},[178,2168,2091],{"class":191},[178,2170,2171],{"class":195}," volume",[178,2173,2097],{"class":195},[178,2175,2176],{"class":184},"           # неиспользуемые тома\n",[178,2178,2179,2181,2184,2186],{"class":180,"line":223},[178,2180,2091],{"class":191},[178,2182,2183],{"class":195}," network",[178,2185,2097],{"class":195},[178,2187,2188],{"class":184},"          # неиспользуемые сети\n",[45,2190,2191,2194,2195,2198,2199,2202,2203,2206],{},[25,2192,2193],{},"Измените драйвер хранения Docker"," (если постоянно заполняется). По умолчанию — ",[30,2196,2197],{},"overlay2",". Для систем с ограниченным местом можно настроить ",[30,2200,2201],{},"devicemapper"," или смонтировать ",[30,2204,2205],{},"/var/lib/docker"," на отдельный диск.",[16,2208,696],{"id":695},[83,2210,2211,2232,2373,2385,2398],{},[45,2212,2213,2218,2219,794,2222,2225,2226,64,2229,722],{},[25,2214,2215,2216],{},"Настройте ",[30,2217,1928],{},". Убедитесь, что конфиги в ",[30,2220,2221],{},"/etc/logrotate.conf",[30,2223,2224],{},"/etc/logrotate.d/"," активны и корректно ограничивают размер/возраст логов (например, ",[30,2227,2228],{},"size 100M",[30,2230,2231],{},"rotate 7",[45,2233,2234,2237,2238,2240,2241],{},[25,2235,2236],{},"Настройте мониторинг",". Добавьте в ",[30,2239,721],{}," задачу, которая шлёт уведомление при заполнении раздела более чем на 85%:\n",[169,2242,2244],{"className":171,"code":2243,"language":173,"meta":174,"style":174},"# /etc/cron.daily/disk-space-check\n#!/bin/bash\nTHRESHOLD=85\nCURRENT=$(df / | awk 'NR==2 {print $5}' | tr -d '%')\nif [ \"$CURRENT\" -ge \"$THRESHOLD\" ]; then\n    echo \"Критично: раздел / заполнен на $CURRENT%\" | mail -s \"Диск переполнен на $(hostname)\" admin@example.com\nfi\n",[30,2245,2246,2251,2256,2267,2302,2335,2368],{"__ignoreMap":174},[178,2247,2248],{"class":180,"line":181},[178,2249,2250],{"class":184},"# /etc/cron.daily/disk-space-check\n",[178,2252,2253],{"class":180,"line":188},[178,2254,2255],{"class":184},"#!/bin/bash\n",[178,2257,2258,2261,2264],{"class":180,"line":216},[178,2259,2260],{"class":202},"THRESHOLD",[178,2262,2263],{"class":624},"=",[178,2265,2266],{"class":195},"85\n",[178,2268,2269,2272,2274,2277,2279,2281,2283,2285,2288,2290,2293,2296,2299],{"class":180,"line":223},[178,2270,2271],{"class":202},"CURRENT",[178,2273,2263],{"class":624},[178,2275,2276],{"class":202},"$(",[178,2278,1398],{"class":191},[178,2280,1447],{"class":195},[178,2282,1458],{"class":624},[178,2284,1628],{"class":191},[178,2286,2287],{"class":195}," 'NR==2 {print $5}'",[178,2289,1458],{"class":624},[178,2291,2292],{"class":191}," tr",[178,2294,2295],{"class":295}," -d",[178,2297,2298],{"class":195}," '%'",[178,2300,2301],{"class":202},")\n",[178,2303,2304,2307,2310,2313,2316,2318,2321,2324,2327,2329,2332],{"class":180,"line":229},[178,2305,2306],{"class":624},"if",[178,2308,2309],{"class":202}," [ ",[178,2311,2312],{"class":195},"\"",[178,2314,2315],{"class":202},"$CURRENT",[178,2317,2312],{"class":195},[178,2319,2320],{"class":624}," -ge",[178,2322,2323],{"class":195}," \"",[178,2325,2326],{"class":202},"$THRESHOLD",[178,2328,2312],{"class":195},[178,2330,2331],{"class":202}," ]; ",[178,2333,2334],{"class":624},"then\n",[178,2336,2337,2340,2343,2345,2348,2350,2353,2356,2359,2362,2365],{"class":180,"line":1829},[178,2338,2339],{"class":295},"    echo",[178,2341,2342],{"class":195}," \"Критично: раздел / заполнен на ",[178,2344,2315],{"class":202},[178,2346,2347],{"class":195},"%\"",[178,2349,1458],{"class":624},[178,2351,2352],{"class":191}," mail",[178,2354,2355],{"class":295}," -s",[178,2357,2358],{"class":195}," \"Диск переполнен на $(",[178,2360,2361],{"class":191},"hostname",[178,2363,2364],{"class":195},")\"",[178,2366,2367],{"class":195}," admin@example.com\n",[178,2369,2370],{"class":180,"line":1834},[178,2371,2372],{"class":624},"fi\n",[45,2374,2375,2384],{},[25,2376,2377,2378,486,2381],{},"Регулярно выполняйте ",[30,2379,2380],{},"apt-get clean",[30,2382,2383],{},"yum clean all"," после массовых обновлений.",[45,2386,2387,2390,2391,64,2393,64,2395,2397],{},[25,2388,2389],{},"Используйте отдельные разделы или диски"," для ",[30,2392,1328],{},[30,2394,1351],{},[30,2396,1331],{}," на серверах. Это изолирует проблему.",[45,2399,2400,2406,2407,2410,2411,2413],{},[25,2401,2402,2403],{},"Устанавливайте ",[30,2404,2405],{},"ncdu"," — интерактивный инструмент для анализа дискового пространства (",[30,2408,2409],{},"sudo ncdu /","). Он удобнее ",[30,2412,1663],{}," для интерактивного изучения.",[799,2415,2416],{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}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 .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}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}",{"title":174,"searchDepth":188,"depth":188,"links":2418},[2419,2421,2422,2429],{"id":1253,"depth":188,"text":2420},"Что означает ошибка No space left on device",{"id":80,"depth":188,"text":81},{"id":141,"depth":188,"text":142,"children":2423},[2424,2425,2426,2427,2428],{"id":1372,"depth":216,"text":1373},{"id":1653,"depth":216,"text":1654},{"id":1772,"depth":216,"text":1773},{"id":1916,"depth":216,"text":1917},{"id":2065,"depth":216,"text":2066},{"id":695,"depth":188,"text":696},"2026-02-15 20:21:11","Не удаётся записать файл из-за нехватки места на диске? Пошаговая инструкция по диагностике и освобождению места на Linux. Проверенные способы за 10 минут.","10-15 мин",[2434,2437,2440,2443],{"question":2435,"answer":2436},"Почему команды `df` и `du` показывают разное количество свободного места?","`df` показывает свободное место на уровне файловой системы, а `du` — суммарный размер файлов в указанных каталогах. Разницу могут создавать удалённые, но ещё открытые файлы (см. `lsof | grep deleted`) или резервирование места для root (обычно 5%).",{"question":2438,"answer":2439},"Как быстро найти самые большие файлы и каталоги на корневом разделе?","Используйте `sudo du -sh /* 2>/dev/null | sort -rh | head -n 20`. Эта команда покажет 20 самых больших каталогов в корне (`/`). Для поиска конкретных больших файлов замените `/*` на путь.",{"question":2441,"answer":2442},"Можно ли увеличить размер раздела без переустановки системы?","Да, если в вашей системе используется LVM или есть неразмеченное пространство на диске. Для LVM используйте `lvextend` и `resize2fs`/`xfs_growfs`. В противном случае потребуется перенос данных на другой диск или использование `gparted` с живой файловой системой (рискованно).",{"question":2444,"answer":2445},"Как настроить мониторинг свободного места, чтобы предупреждение приходило заранее?","Настройте `cron`-задачу, которая запускает скрипт с проверкой `df -h / | awk 'NR==2 {if ($5+0 > 90) print \"Критично: \" $5}'` и отправляет уведомление (например, через `mail` или `curl` в Telegram-бота) при заполнении раздела более чем на 90%.",[2447,2450,2453,2456,2459],{"name":2448,"text":2449},"Проверьте текущее состояние дисков","Выполните команду `df -h`, чтобы увидеть использование места по всем смонтированным файловым системам. Обратите внимание на столбец `Use%` и раздел, который указан как `/` (корневой) или `/home`.",{"name":2451,"text":2452},"Найдите \"пожирателей\" места","Используйте `sudo du -sh /* 2>/dev/null | sort -rh | head -n 20` для поиска 20 самых больших каталогов в корне. Для более точного поиска в конкретной директории (например, `/var/log`) выполните `sudo du -sh /var/log/* | sort -rh`.",{"name":2454,"text":2455},"Очистите кэш пакетного менеджера и старые ядра","Для Debian/Ubuntu: `sudo apt-get clean` (очистка кэша .deb) и `sudo apt-get autoremove --purge` (удаление старых зависимостей и ядер). Для RHEL/CentOS/Fedora: `sudo yum clean all` или `sudo dnf autoremove`.",{"name":2457,"text":2458},"Удалите большие ненужные файлы","После анализа на шаге 2 удаляйте найденные ненужные файлы командой `sudo rm -rf /путь/к/файлу`. Будьте предельно осторожны с `rm -rf`! Для безопасного удаления больших файлов старше N дней используйте `find /путь -type f -mtime +30 -delete`.",{"name":2460,"text":2461},"Очистите системные логи (если нужно)","Логи в `/var/log` могут разрастаться. Очистите текущие логи: `sudo sh -c 'cat /dev/null > /var/log/syslog'` (или конкретного лога). Для управления ротацией логов убедитесь, что работает `logrotate` (проверьте `/etc/logrotate.conf`).","PT15M",[2464,2465,2466,2467,2468,2469,2470,2471],"ошибка no space left on device linux","диск переполнен linux как исправить","очистить место на диске linux","команда df du отличия","освободить место в ubuntu/debian","ошибка enospc что делать","заполнился корневой раздел linux","удалить большие файлы linux",{},[863,2474,860],"/guides/linux/disk-usage-analysis",{"title":1244,"description":2431},"high","errors/linux/disk-full","Статья поможет быстро диагностировать и исправить критическую ошибку 'No space left on device' в Linux. Вы узнаете, как найти занимающие место файлы и каталоги, а также освоите несколько методов освобождения дискового пространства.",[872,2480,2481,173,2482,2483],"disk space","sysadmin","диагностика","очистка","EOJtVdRmXPUtk2gBOCiAkpi54eQmK9yi45nvCp6-ztA",{"id":2486,"title":2487,"appliesTo":2488,"author":11,"body":2493,"canonical":817,"code":817,"createdAt":3731,"description":3732,"difficulty":868,"draft":821,"estimatedTime":3733,"extension":823,"faq":3734,"howToSteps":3747,"howToTotalTime":3766,"image":817,"keywords":3767,"locale":858,"meta":3776,"navigation":219,"path":865,"platform":861,"related":3777,"section":3781,"seo":3782,"severity":817,"stem":3783,"summary":3784,"tags":3785,"twitterCreator":817,"twitterSite":817,"type":3789,"updatedAt":3731,"__hash__":3790},"content_ru/guides/linux/lsof-command.md","lsof: Полное руководство по команде для поиска открытых файлов",[7,2489,2490,2491,2492],"CentOS 7+","Debian 10+","RHEL 8+","Любой дистрибутив с установленным пакетом lsof",{"type":13,"value":2494,"toc":3702},[2495,2499,2508,2511,2525,2528,2532,2579,2583,2587,2596,2605,2610,2616,2621,2658,2666,2677,2681,2684,2689,2701,2707,2713,2728,2742,2746,2749,2764,2770,2773,2777,2783,2800,2804,2810,2817,2823,2855,2859,2866,2871,2887,2892,2908,2913,2931,2947,2952,2993,2997,3006,3023,3029,3033,3043,3072,3098,3101,3113,3137,3158,3162,3190,3195,3217,3221,3227,3314,3316,3320,3326,3447,3451,3457,3498,3508,3512,3519,3529,3537,3575,3583,3603,3610,3620,3654,3661,3699],[16,2496,2498],{"id":2497},"введение-зачем-это-нужно","Введение / Зачем это нужно",[21,2500,2501,2503,2504,2507],{},[25,2502,150],{}," (List Open Files) — это мощная утилита командной строки в Linux, которая позволяет увидеть, какие процессы в системе имеют открытыми файлы, каталоги, сетевые сокеты, устройства и т.д. В Unix-подобных системах почти всё является файлом, поэтому эта команда — ",[25,2505,2506],{},"основной инструмент диагностики"," для системных администраторов, разработчиков и DevOps-инженеров.",[21,2509,2510],{},"Вы научитесь решать частые проблемы:",[42,2512,2513,2516,2519,2522],{},[45,2514,2515],{},"«Порт 8080 уже занят, но каким процессом?»",[45,2517,2518],{},"«Не могу удалить файл /tmp/app.log, говорится, что он используется. Кто его держит?»",[45,2520,2521],{},"«Какие сетевые соединения активны у моего приложения?»",[45,2523,2524],{},"«Почему процесс потребляет так много дескрипторов?»",[21,2526,2527],{},"Это руководство содержит конкретные, проверенные команды с объяснениями, которые вы сможете использовать сразу.",[16,2529,2531],{"id":2530},"требования-подготовка","Требования / Подготовка",[83,2533,2534,2540,2546,2576],{},[45,2535,2536,2539],{},[25,2537,2538],{},"Доступ к терминалу Linux"," (Ubuntu, CentOS, Debian, RHEL, Fedora и др.).",[45,2541,2542,2545],{},[25,2543,2544],{},"Права суперпользователя (sudo)",". Многие команды, особенно связанные с сетевыми портами и процессами других пользователей, требуют прав администратора для корректного отображения информации.",[45,2547,2548,2553,2554],{},[25,2549,2550,2551],{},"Установленный пакет ",[30,2552,150],{},". В большинстве дистрибутивов он есть по умолчанию, но в минимальных установках может отсутствовать.\n",[42,2555,2556,2565],{},[45,2557,2558,2561,2562],{},[25,2559,2560],{},"Debian/Ubuntu:"," ",[30,2563,2564],{},"sudo apt update && sudo apt install lsof",[45,2566,2567,2561,2570,33,2573],{},[25,2568,2569],{},"RHEL/CentOS/Fedora:",[30,2571,2572],{},"sudo yum install lsof",[30,2574,2575],{},"sudo dnf install lsof",[45,2577,2578],{},"Базовое понимание командной строки и концепции PID (идентификатор процесса).",[16,2580,2582],{"id":2581},"пошаговая-инструкция","Пошаговая инструкция",[144,2584,2586],{"id":2585},"шаг-1-базовый-синтаксис-и-просмотр-всех-открытых-файлов","Шаг 1: Базовый синтаксис и просмотр всех открытых файлов",[21,2588,2589,2590,2592,2593,77],{},"Запуск ",[30,2591,150],{}," без аргументов выведет список ",[25,2594,2595],{},"всех открытых файлов текущего пользователя",[169,2597,2599],{"className":171,"code":2598,"language":173,"meta":174,"style":174},"lsof\n",[30,2600,2601],{"__ignoreMap":174},[178,2602,2603],{"class":180,"line":181},[178,2604,2598],{"class":191},[21,2606,2607],{},[25,2608,2609],{},"Пример вывода (упрощённо):",[169,2611,2614],{"className":2612,"code":2613,"language":268},[266],"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",[30,2615,2613],{"__ignoreMap":174},[21,2617,2618],{},[25,2619,2620],{},"Ключевые столбцы:",[42,2622,2623,2629,2634,2640,2646,2652],{},[45,2624,2625,2628],{},[30,2626,2627],{},"COMMAND"," — имя исполняемого файла процесса.",[45,2630,2631,2633],{},[30,2632,276],{}," — идентификатор процесса.",[45,2635,2636,2639],{},[30,2637,2638],{},"USER"," — владелец процесса.",[45,2641,2642,2645],{},[30,2643,2644],{},"FD"," — файловый дескриптор (cwd — текущий каталог, txt — исполняемый код, mem — отображённая в память область).",[45,2647,2648,2651],{},[30,2649,2650],{},"TYPE"," — тип файла (REG — обычный файл, DIR — каталог, CHR — символьное устройство, IPv4/IPv6 — сетевой сокет).",[45,2653,2654,2657],{},[30,2655,2656],{},"NAME"," — путь к файлу или информация о сокете.",[21,2659,2660,2663,2664,167],{},[25,2661,2662],{},"Для полной системной картины"," (всех пользователей) используйте ",[30,2665,192],{},[169,2667,2669],{"className":171,"code":2668,"language":173,"meta":174,"style":174},"sudo lsof\n",[30,2670,2671],{"__ignoreMap":174},[178,2672,2673,2675],{"class":180,"line":181},[178,2674,192],{"class":191},[178,2676,213],{"class":195},[144,2678,2680],{"id":2679},"шаг-2-поиск-процессов-открывших-конкретный-файл-или-каталог","Шаг 2: Поиск процессов, открывших конкретный файл или каталог",[21,2682,2683],{},"Это самая частая задача: «Кто использует этот файл?».",[21,2685,2686],{},[25,2687,2688],{},"Для одного файла:",[169,2690,2692],{"className":171,"code":2691,"language":173,"meta":174,"style":174},"lsof /path/to/file.log\n",[30,2693,2694],{"__ignoreMap":174},[178,2695,2696,2698],{"class":180,"line":181},[178,2697,150],{"class":191},[178,2699,2700],{"class":195}," /path/to/file.log\n",[21,2702,2703,2704],{},"Пример: ",[30,2705,2706],{},"lsof /var/log/syslog",[21,2708,2709,2712],{},[25,2710,2711],{},"Рекурсивный поиск по каталогу"," (все файлы внутри):",[169,2714,2716],{"className":171,"code":2715,"language":173,"meta":174,"style":174},"lsof +D /home/user/documents/\n",[30,2717,2718],{"__ignoreMap":174},[178,2719,2720,2722,2725],{"class":180,"line":181},[178,2721,150],{"class":191},[178,2723,2724],{"class":195}," +D",[178,2726,2727],{"class":195}," /home/user/documents/\n",[21,2729,328,2730,2733,2734,2737,2738,2741],{},[25,2731,2732],{},"Важно:"," Опция ",[30,2735,2736],{},"+D"," может работать ",[25,2739,2740],{},"очень медленно"," на больших каталогах, так как проверяет каждый подкаталог. Для быстрой проверки конкретного файла используйте первый вариант.",[144,2743,2745],{"id":2744},"шаг-3-поиск-процесса-по-его-pid-что-открыл-процесс","Шаг 3: Поиск процесса по его PID (что открыл процесс)",[21,2747,2748],{},"Если вы знаете PID процесса (например, 5678), посмотрите, какие ресурсы он использует:",[169,2750,2752],{"className":171,"code":2751,"language":173,"meta":174,"style":174},"lsof -p 5678\n",[30,2753,2754],{"__ignoreMap":174},[178,2755,2756,2758,2761],{"class":180,"line":181},[178,2757,150],{"class":191},[178,2759,2760],{"class":295}," -p",[178,2762,2763],{"class":295}," 5678\n",[21,2765,2766,2767,77],{},"Можно указать несколько PID через запятую: ",[30,2768,2769],{},"lsof -p 5678,9012",[21,2771,2772],{},"Это полезно для анализа работы запущенного демона, контейнера или подозрительного процесса.",[144,2774,2776],{"id":2775},"шаг-4-поиск-процесса-слушающего-сетевой-порт","Шаг 4: Поиск процесса, слушающего сетевой порт",[21,2778,2779,2782],{},[25,2780,2781],{},"Классическая задача:"," «Порт 3000 занят, какой процесс его слушает?».",[169,2784,2786],{"className":171,"code":2785,"language":173,"meta":174,"style":174},"sudo lsof -i :3000\n",[30,2787,2788],{"__ignoreMap":174},[178,2789,2790,2792,2794,2797],{"class":180,"line":181},[178,2791,192],{"class":191},[178,2793,239],{"class":195},[178,2795,2796],{"class":295}," -i",[178,2798,2799],{"class":195}," :3000\n",[21,2801,2802],{},[25,2803,262],{},[169,2805,2808],{"className":2806,"code":2807,"language":268},[266],"COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME\nnode    4321 user   20u  IPv6 123456      0t0  TCP *:3000 (LISTEN)\n",[30,2809,2807],{"__ignoreMap":174},[21,2811,2812,2813,2816],{},"Здесь видно, что порт 3000 слушает процесс ",[30,2814,2815],{},"node"," (Node.js) с PID 4321.",[21,2818,2819,2822],{},[25,2820,2821],{},"Поиск по имени службы/порта"," (если порт известен, например, 80 для HTTP):",[169,2824,2826],{"className":171,"code":2825,"language":173,"meta":174,"style":174},"sudo lsof -i :http\n# или\nsudo lsof -i :80\n",[30,2827,2828,2839,2844],{"__ignoreMap":174},[178,2829,2830,2832,2834,2836],{"class":180,"line":181},[178,2831,192],{"class":191},[178,2833,239],{"class":195},[178,2835,2796],{"class":295},[178,2837,2838],{"class":195}," :http\n",[178,2840,2841],{"class":180,"line":188},[178,2842,2843],{"class":184},"# или\n",[178,2845,2846,2848,2850,2852],{"class":180,"line":216},[178,2847,192],{"class":191},[178,2849,239],{"class":195},[178,2851,2796],{"class":295},[178,2853,2854],{"class":195}," :80\n",[144,2856,2858],{"id":2857},"шаг-5-расширенная-фильтрация-сетевых-соединений","Шаг 5: Расширенная фильтрация сетевых соединений",[21,2860,2861,2862,2865],{},"Комбинация опций ",[30,2863,2864],{},"-i"," позволяет тонко настраивать фильтрацию.",[21,2867,2868],{},[25,2869,2870],{},"Только TCP-соединения:",[169,2872,2874],{"className":171,"code":2873,"language":173,"meta":174,"style":174},"sudo lsof -i tcp\n",[30,2875,2876],{"__ignoreMap":174},[178,2877,2878,2880,2882,2884],{"class":180,"line":181},[178,2879,192],{"class":191},[178,2881,239],{"class":195},[178,2883,2796],{"class":295},[178,2885,2886],{"class":195}," tcp\n",[21,2888,2889],{},[25,2890,2891],{},"Только UDP-сокеты:",[169,2893,2895],{"className":171,"code":2894,"language":173,"meta":174,"style":174},"sudo lsof -i udp\n",[30,2896,2897],{"__ignoreMap":174},[178,2898,2899,2901,2903,2905],{"class":180,"line":181},[178,2900,192],{"class":191},[178,2902,239],{"class":195},[178,2904,2796],{"class":295},[178,2906,2907],{"class":195}," udp\n",[21,2909,2910],{},[25,2911,2912],{},"Соединения в состоянии LISTEN (слушающие порты):",[169,2914,2916],{"className":171,"code":2915,"language":173,"meta":174,"style":174},"sudo lsof -i -s tcp:listen\n",[30,2917,2918],{"__ignoreMap":174},[178,2919,2920,2922,2924,2926,2928],{"class":180,"line":181},[178,2921,192],{"class":191},[178,2923,239],{"class":195},[178,2925,2796],{"class":295},[178,2927,2355],{"class":295},[178,2929,2930],{"class":195}," tcp:listen\n",[21,2932,2933,2934,2936,2937,64,2940,64,2943,2946],{},"Опция ",[30,2935,1491],{}," позволяет фильтровать по состоянию соединения (",[30,2938,2939],{},"established",[30,2941,2942],{},"listen",[30,2944,2945],{},"close_wait"," и др.).",[21,2948,2949],{},[25,2950,2951],{},"Соединения с конкретного или на конкретный IP-адрес:",[169,2953,2955],{"className":171,"code":2954,"language":173,"meta":174,"style":174},"# Все соединения с удалённого адреса 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",[30,2956,2957,2962,2973,2977,2982],{"__ignoreMap":174},[178,2958,2959],{"class":180,"line":181},[178,2960,2961],{"class":184},"# Все соединения с удалённого адреса 192.168.1.100\n",[178,2963,2964,2966,2968,2970],{"class":180,"line":188},[178,2965,192],{"class":191},[178,2967,239],{"class":195},[178,2969,2796],{"class":295},[178,2971,2972],{"class":195}," @192.168.1.100\n",[178,2974,2975],{"class":180,"line":216},[178,2976,220],{"emptyLinePlaceholder":219},[178,2978,2979],{"class":180,"line":223},[178,2980,2981],{"class":184},"# Все соединения на локальный интерфейс 192.168.1.5:80\n",[178,2983,2984,2986,2988,2990],{"class":180,"line":229},[178,2985,192],{"class":191},[178,2987,239],{"class":195},[178,2989,2796],{"class":295},[178,2991,2992],{"class":195}," @192.168.1.5:80\n",[144,2994,2996],{"id":2995},"шаг-6-поиск-файлов-открытых-определённым-пользователем","Шаг 6: Поиск файлов, открытых определённым пользователем",[21,2998,2999,3000,33,3003,167],{},"Чтобы увидеть все файлы, открытые пользователем ",[30,3001,3002],{},"apache",[30,3004,3005],{},"www-data",[169,3007,3009],{"className":171,"code":3008,"language":173,"meta":174,"style":174},"sudo lsof -u apache\n",[30,3010,3011],{"__ignoreMap":174},[178,3012,3013,3015,3017,3020],{"class":180,"line":181},[178,3014,192],{"class":191},[178,3016,239],{"class":195},[178,3018,3019],{"class":295}," -u",[178,3021,3022],{"class":195}," apache\n",[21,3024,3025,3026,77],{},"Можно указать нескольких пользователей: ",[30,3027,3028],{},"lsof -u user1,user2",[144,3030,3032],{"id":3031},"шаг-7-комбинирование-фильтров-логическое-и","Шаг 7: Комбинирование фильтров (логическое И)",[21,3034,3035,3036,3038,3039,3042],{},"Фильтры в ",[30,3037,150],{}," по умолчанию объединяются через ",[25,3040,3041],{},"И"," (логическое умножение). Это очень мощно.",[21,3044,3045,3047,3048,3051,3052,3055,3056,3051,3059,3062,3063,3051,3069,722],{},[25,3046,1061],{}," Найти все ",[25,3049,3050],{},"TCP-соединения"," (",[30,3053,3054],{},"-i tcp","), которые ",[25,3057,3058],{},"слушают",[30,3060,3061],{},"-s tcp:listen",") и принадлежат ",[25,3064,3065,3066],{},"процессу с именем ",[30,3067,3068],{},"nginx",[30,3070,3071],{},"-c nginx",[169,3073,3075],{"className":171,"code":3074,"language":173,"meta":174,"style":174},"sudo lsof -i tcp -s tcp:listen -c nginx\n",[30,3076,3077],{"__ignoreMap":174},[178,3078,3079,3081,3083,3085,3088,3090,3093,3095],{"class":180,"line":181},[178,3080,192],{"class":191},[178,3082,239],{"class":195},[178,3084,2796],{"class":295},[178,3086,3087],{"class":195}," tcp",[178,3089,2355],{"class":295},[178,3091,3092],{"class":195}," tcp:listen",[178,3094,1949],{"class":295},[178,3096,3097],{"class":195}," nginx\n",[21,3099,3100],{},"Где:",[42,3102,3103],{},[45,3104,3105,3108,3109,3112],{},[30,3106,3107],{},"-c \u003Ccommand>"," — фильтр по первым символам имени команды (можно использовать ",[30,3110,3111],{},"^nginx"," для точного совпадения с начала строки).",[21,3114,3115,3118,3119,3122,3123,3129,3130,3136],{},[25,3116,3117],{},"Ещё пример:"," Какие ",[25,3120,3121],{},"файлы"," открывает ",[25,3124,3125,3126],{},"пользователь ",[30,3127,3128],{},"postgres"," в ",[25,3131,3132,3133],{},"каталоге ",[30,3134,3135],{},"/var/lib/postgresql","?",[169,3138,3140],{"className":171,"code":3139,"language":173,"meta":174,"style":174},"sudo lsof -u postgres +D /var/lib/postgresql\n",[30,3141,3142],{"__ignoreMap":174},[178,3143,3144,3146,3148,3150,3153,3155],{"class":180,"line":181},[178,3145,192],{"class":191},[178,3147,239],{"class":195},[178,3149,3019],{"class":295},[178,3151,3152],{"class":195}," postgres",[178,3154,2724],{"class":195},[178,3156,3157],{"class":195}," /var/lib/postgresql\n",[144,3159,3161],{"id":3160},"шаг-8-полезные-опции-для-удобного-вывода","Шаг 8: Полезные опции для удобного вывода",[42,3163,3164,3170,3176,3182],{},[45,3165,3166,3169],{},[30,3167,3168],{},"-n"," — не преобразовывать IP-адреса в имена хостов (ускоряет вывод).",[45,3171,3172,3175],{},[30,3173,3174],{},"-P"," — не преобразовывать номера портов в имена служб (порт 80 вместо http).",[45,3177,3178,3181],{},[30,3179,3180],{},"-F"," — вывод в формате, удобном для парсинга скриптами (каждая строка — поле, начинается с символа-идентификатора).",[45,3183,3184,3187,3188,722],{},[30,3185,3186],{},"-t"," — вывод только PID (удобно для передачи в другие команды, например, ",[30,3189,296],{},[21,3191,3192],{},[25,3193,3194],{},"Пример быстрой и чистой проверки слушающих портов:",[169,3196,3198],{"className":171,"code":3197,"language":173,"meta":174,"style":174},"sudo lsof -i -s tcp:listen -n -P\n",[30,3199,3200],{"__ignoreMap":174},[178,3201,3202,3204,3206,3208,3210,3212,3214],{"class":180,"line":181},[178,3203,192],{"class":191},[178,3205,239],{"class":195},[178,3207,2796],{"class":295},[178,3209,2355],{"class":295},[178,3211,3092],{"class":195},[178,3213,1472],{"class":295},[178,3215,3216],{"class":295}," -P\n",[144,3218,3220],{"id":3219},"шаг-9-практический-пример-остановка-процесса-блокирующего-порт","Шаг 9: Практический пример — остановка процесса, блокирующего порт",[21,3222,3223,3224,77],{},"Допустим, вы запускаете веб-сервер на порту 8080 и получаете ошибку ",[30,3225,3226],{},"Address already in use",[83,3228,3229,3262,3308],{},[45,3230,3231,3234,3250,3252,3253,3255,3256,3258,3259,722],{},[25,3232,3233],{},"Найдите виновника:",[169,3235,3237],{"className":171,"code":3236,"language":173,"meta":174,"style":174},"sudo lsof -i :8080\n",[30,3238,3239],{"__ignoreMap":174},[178,3240,3241,3243,3245,3247],{"class":180,"line":181},[178,3242,192],{"class":191},[178,3244,239],{"class":195},[178,3246,2796],{"class":295},[178,3248,3249],{"class":195}," :8080\n",[91,3251],{},"В выводе смотрите ",[30,3254,276],{}," (например, 12345) и ",[30,3257,2627],{}," (например, ",[30,3260,3261],{},"java",[45,3263,3264,3267,3268,3283,3285,3286,3289,3290,3292,3293],{},[25,3265,3266],{},"Остановите процесс"," (если это не критичная служба):",[169,3269,3271],{"className":171,"code":3270,"language":173,"meta":174,"style":174},"sudo kill 12345\n",[30,3272,3273],{"__ignoreMap":174},[178,3274,3275,3277,3280],{"class":180,"line":181},[178,3276,192],{"class":191},[178,3278,3279],{"class":195}," kill",[178,3281,3282],{"class":295}," 12345\n",[91,3284],{},"Если процесс не реагирует на ",[30,3287,3288],{},"SIGTERM"," (обычный ",[30,3291,296],{},"), используйте принудительное завершение:",[169,3294,3296],{"className":171,"code":3295,"language":173,"meta":174,"style":174},"sudo kill -9 12345\n",[30,3297,3298],{"__ignoreMap":174},[178,3299,3300,3302,3304,3306],{"class":180,"line":181},[178,3301,192],{"class":191},[178,3303,3279],{"class":195},[178,3305,314],{"class":295},[178,3307,3282],{"class":295},[45,3309,3310,3313],{},[25,3311,3312],{},"Перезапустите ваш сервер",". Порт теперь должен быть свободен.",[691,3315],{},[144,3317,3319],{"id":3318},"шаг-10-поиск-утечек-файловых-дескрипторов","Шаг 10: Поиск утечек файловых дескрипторов",[21,3321,3322,3323,722],{},"Если процесс (особенно долгоживущий) открывает много файлов и не закрывает их, это может привести к исчерпанию лимита системы (",[30,3324,3325],{}," Too many open files",[83,3327,3328,3370],{},[45,3329,3330,3333,3364,3366,3367,3369],{},[25,3331,3332],{},"Посмотреть, сколько дескрипторов открыто у процесса:",[169,3334,3336],{"className":171,"code":3335,"language":173,"meta":174,"style":174},"lsof -p \u003CPID> | wc -l\n",[30,3337,3338],{"__ignoreMap":174},[178,3339,3340,3342,3344,3347,3350,3353,3356,3358,3361],{"class":180,"line":181},[178,3341,150],{"class":191},[178,3343,2760],{"class":295},[178,3345,3346],{"class":624}," \u003C",[178,3348,3349],{"class":195},"PI",[178,3351,3352],{"class":202},"D",[178,3354,3355],{"class":624},">",[178,3357,1458],{"class":624},[178,3359,3360],{"class":191}," wc",[178,3362,3363],{"class":295}," -l\n",[91,3365],{},"(Строка с ",[30,3368,2627],{}," тоже учитывается, но для оценки порядок величин подходит).",[45,3371,3372,3375,3418,3420,3421],{},[25,3373,3374],{},"Посмотреть топ-процессов по количеству открытых файлов:",[169,3376,3378],{"className":171,"code":3377,"language":173,"meta":174,"style":174},"sudo lsof | awk '{print $2}' | sort | uniq -c | sort -nr | head -20\n",[30,3379,3380],{"__ignoreMap":174},[178,3381,3382,3384,3386,3388,3390,3393,3395,3397,3399,3402,3404,3406,3408,3411,3413,3415],{"class":180,"line":181},[178,3383,192],{"class":191},[178,3385,239],{"class":195},[178,3387,1458],{"class":624},[178,3389,1628],{"class":191},[178,3391,3392],{"class":195}," '{print $2}'",[178,3394,1458],{"class":624},[178,3396,1461],{"class":191},[178,3398,1458],{"class":624},[178,3400,3401],{"class":191}," uniq",[178,3403,1949],{"class":295},[178,3405,1458],{"class":624},[178,3407,1461],{"class":191},[178,3409,3410],{"class":295}," -nr",[178,3412,1458],{"class":624},[178,3414,1469],{"class":191},[178,3416,3417],{"class":295}," -20\n",[91,3419],{},"Эта команда:",[42,3422,3423,3429,3435,3441],{},[45,3424,3425,3428],{},[30,3426,3427],{},"awk '{print $2}'"," — вырезает второй столбец (PID).",[45,3430,3431,3434],{},[30,3432,3433],{},"sort | uniq -c"," — подсчитывает количество вхождений каждого PID.",[45,3436,3437,3440],{},[30,3438,3439],{},"sort -nr"," — сортирует по убыванию количества.",[45,3442,3443,3446],{},[30,3444,3445],{},"head -20"," — показывает топ-20.",[16,3448,3450],{"id":3449},"проверка-результата","Проверка результата",[21,3452,3453,3454,3456],{},"После выполнения любой команды ",[30,3455,150],{}," проверьте, что вывод содержит ожидаемые данные:",[42,3458,3459,3468,3492],{},[45,3460,3461,3464,3465,3467],{},[25,3462,3463],{},"Для поиска по файлу:"," В столбце ",[30,3466,2656],{}," должен быть указан ваш путь.",[45,3469,3470,3464,3473,3475,3476,33,3479,3482,3483,3485,3486,33,3489,77],{},[25,3471,3472],{},"Для поиска по порту:",[30,3474,2656],{}," должно быть ",[30,3477,3478],{},"*:порт",[30,3480,3481],{},"IP:порт",", а в ",[30,3484,2650],{}," — ",[30,3487,3488],{},"IPv4",[30,3490,3491],{},"IPv6",[45,3493,3494,3497],{},[25,3495,3496],{},"Для поиска по PID:"," В списке должен присутствовать указанный PID.",[21,3499,3500,3501,3504,3505,3507],{},"Если вывод пуст, это означает, что соответствующие ресурсы ",[25,3502,3503],{},"не открыты"," (файл не используется, порт не слушается) или вы запустили команду без ",[30,3506,192],{}," и не видите процессы других пользователей.",[16,3509,3511],{"id":3510},"возможные-проблемы","Возможные проблемы",[144,3513,3515,3516],{"id":3514},"проблема-1-lsof-command-not-found","Проблема 1: ",[30,3517,3518],{},"lsof: command not found",[21,3520,3521,3524,3525,3528],{},[25,3522,3523],{},"Причина:"," Пакет не установлен.\n",[25,3526,3527],{},"Решение:"," Установите через менеджер пакетов вашего дистрибутива (см. Требования).",[144,3530,3532,3533,3536],{"id":3531},"проблема-2-пустой-вывод-при-поиске-по-порту-sudo-lsof-i-80-ничего-не-показывает","Проблема 2: Пустой вывод при поиске по порту (",[30,3534,3535],{},"sudo lsof -i :80"," ничего не показывает)",[21,3538,3539,3542,3543,3546,3547,3549,3550,3552,3553,3556,3557,3560,3561,3564,3565,3567,3568,33,3571,3574],{},[25,3540,3541],{},"Причина 1:"," Никакой процесс действительно не слушает этот порт. Порт свободен.\n",[25,3544,3545],{},"Причина 2:"," Вы ищете порт ",[25,3548,3491],{},", а процесс слушает ",[25,3551,3488],{}," (или наоборот). Попробуйте ",[30,3554,3555],{},"sudo lsof -i -P -n | grep :80"," для общего поиска.\n",[25,3558,3559],{},"Причина 3:"," Порт находится в состоянии ",[30,3562,3563],{},"TIME_WAIT"," (закрытое соединение, которое ещё не освободилось полностью). ",[30,3566,150],{}," по умолчанию не показывает такие сокеты. Используйте ",[30,3569,3570],{},"netstat -an | grep :80",[30,3572,3573],{},"ss -ltnp"," для более полной картины.",[144,3576,3578,3579,3582],{"id":3577},"проблема-3-permission-denied-или-недостаточно-прав","Проблема 3: ",[30,3580,3581],{},"permission denied"," или недостаточно прав",[21,3584,3585,3587,3588,3590,3591,3593,3594,3596,3597,3599,3600,77],{},[25,3586,3523],{}," Вы пытаетесь увидеть открытые файлы процесса, принадлежащего другому пользователю (особенно ",[30,3589,881],{},"), без ",[30,3592,192],{},".\n",[25,3595,3527],{}," Всегда используйте ",[30,3598,192],{}," для системного обзора: ",[30,3601,3602],{},"sudo lsof",[144,3604,3606,3607,3609],{"id":3605},"проблема-4-команда-lsof-работает-очень-медленно","Проблема 4: Команда ",[30,3608,150],{}," работает очень медленно",[21,3611,3612,3614,3615,3617,3618],{},[25,3613,3523],{}," Использование опции ",[30,3616,2736],{}," на большом каталоге или фильтрация по сложному шаблону.\n",[25,3619,3527],{},[42,3621,3622,3633,3646],{},[45,3623,3624,3625,3627,3628,64,3630,3632],{},"Избегайте ",[30,3626,2736],{}," на корневых каталогах (",[30,3629,486],{},[30,3631,1351],{},"). Ищите конкретные файлы.",[45,3634,3635,3636,64,3639,64,3642,3645],{},"Используйте более точные фильтры (",[30,3637,3638],{},"-p",[30,3640,3641],{},"-u",[30,3643,3644],{},"-c",") для уменьшения объема обрабатываемых данных.",[45,3647,3648,3649,794,3651,3653],{},"Добавьте ",[30,3650,3168],{},[30,3652,3174],{}," для отключения преобразования имён (ускоряет работу).",[144,3655,3657,3658,3660],{"id":3656},"проблема-5-не-могу-удалить-файл-хотя-lsof-не-показывает-его-использование","Проблема 5: Не могу удалить файл, хотя ",[30,3659,150],{}," не показывает его использование",[21,3662,3663,3665,3666,3668,3669,3672,3673,3675,3676,3679,3680,3682,3683,3685,3686,3688,3689,3691,3692,33,3695,3698],{},[25,3664,3541],{}," Файл удалён, но ещё открыт процессом. В ",[30,3667,150],{}," такой файл отобразится как ",[30,3670,3671],{},"(deleted)"," в конце строки ",[30,3674,2656],{},". Процесс продолжает писать в этот ",[1378,3677,3678],{},"уже удалённый"," файловый дескриптор, занимая место на диске.\n",[25,3681,3527],{}," Остановите процесс (",[30,3684,296],{},"), который держит дескриптор. Освобождение места на диске произойдёт автоматически после завершения процесса.\n",[25,3687,3545],{}," Файл используется не процессом, а ядром (например, как swap-файл или корень смонтированной файловой системы). ",[30,3690,150],{}," может не показать такие системные использования. Используйте ",[30,3693,3694],{},"fuser -v /path/to/file",[30,3696,3697],{},"lsof /path/to/file | grep -v '(deleted)'"," для чистоты вывода.",[799,3700,3701],{},"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":174,"searchDepth":188,"depth":188,"links":3703},[3704,3705,3706,3718,3719],{"id":2497,"depth":188,"text":2498},{"id":2530,"depth":188,"text":2531},{"id":2581,"depth":188,"text":2582,"children":3707},[3708,3709,3710,3711,3712,3713,3714,3715,3716,3717],{"id":2585,"depth":216,"text":2586},{"id":2679,"depth":216,"text":2680},{"id":2744,"depth":216,"text":2745},{"id":2775,"depth":216,"text":2776},{"id":2857,"depth":216,"text":2858},{"id":2995,"depth":216,"text":2996},{"id":3031,"depth":216,"text":3032},{"id":3160,"depth":216,"text":3161},{"id":3219,"depth":216,"text":3220},{"id":3318,"depth":216,"text":3319},{"id":3449,"depth":188,"text":3450},{"id":3510,"depth":188,"text":3511,"children":3720},[3721,3723,3725,3727,3729],{"id":3514,"depth":216,"text":3722},"Проблема 1: lsof: command not found",{"id":3531,"depth":216,"text":3724},"Проблема 2: Пустой вывод при поиске по порту (sudo lsof -i :80 ничего не показывает)",{"id":3577,"depth":216,"text":3726},"Проблема 3: permission denied или недостаточно прав",{"id":3605,"depth":216,"text":3728},"Проблема 4: Команда lsof работает очень медленно",{"id":3656,"depth":216,"text":3730},"Проблема 5: Не могу удалить файл, хотя lsof не показывает его использование","2026-02-16 19:03:50","Изучите мощную команду lsof в Linux с практическими примерами. Узнайте, как найти процессы, блокирующие порты, файлы и сокеты. Пошаговая инструкция с 15+ примерами.","15-20 мин",[3735,3738,3741,3744],{"question":3736,"answer":3737},"Что такое lsof и зачем он нужен?","lsof (List Open Files) — утилита командной строки, которая показывает, какие файлы, каталоги, сокеты и устройства в данный момент открыты какими процессами. Это ключевой инструмент для диагностики: 'кто держит этот файл/порт?', 'почему не могу удалить?', 'какие соединения активны?'.",{"question":3739,"answer":3740},"Почему lsof выдает 'command not found'?","Пакет lsof не установлен по умолчанию в некоторых минималистичных дистрибутивах. Установите его через менеджер пакетов: `sudo apt install lsof` (Debian/Ubuntu) или `sudo yum install lsof` (RHEL/CentOS).",{"question":3742,"answer":3743},"Как найти, какой процесс слушает определённый порт (например, 80)?","Используйте комбинацию опций: `sudo lsof -i :80`. Флаг `-i` фильтрует по сетевым соединениям, а `:80` указывает конкретный порт. Без `sudo` могут не отображаться процессы других пользователей.",{"question":3745,"answer":3746},"Чем lsof отличается от netstat или ss?","lsof показывает информацию в контексте процессов (PID, имя команды) и файловых дескрипторов. netstat/ss показывают только сетевое состояние. `lsof -i` даёт более полную картину, связывая порт/сокет с конкретным процессом и файлом.",[3748,3751,3754,3757,3760,3763],{"name":3749,"text":3750},"Установка и проверка доступности","Убедитесь, что lsof установлен. Выполните `lsof -v` для проверки версии. Если команда не найдена, установите пакет через системный менеджер пакетов (apt/yum/dnf).",{"name":3752,"text":3753},"Базовый синтаксис и просмотр всех открытых файлов","Запустите `lsof` без аргументов для списка всех открытых файлов текущего пользователя. Для полной системной картины (всех пользователей) используйте `sudo lsof`. Вывод содержит столбцы: COMMAND, PID, USER, FD, TYPE, DEVICE, SIZE/OFF, NODE, NAME.",{"name":3755,"text":3756},"Поиск файлов, открытых определённым процессом","Чтобы увидеть, какие файлы открыл процесс с PID 1234, выполните `lsof -p 1234`. Это помогает понять активность подозрительного или зависшего процесса. PID можно узнать через `ps aux | grep \u003Cимя_процесса>`.",{"name":3758,"text":3759},"Поиск процессов, открывших конкретный файл или каталог","Чтобы узнать, кто использует файл `/var/log/syslog`, введите `lsof /var/log/syslog`. Для каталога укажите путь: `lsof +D /home/user/`. Опция `+D` рекурсивно проверяет каталог (может быть медленной для больших деревьев).",{"name":3761,"text":3762},"Поиск процесса, слушающего сетевой порт","Для диагностики 'порт занят' используйте `sudo lsof -i :\u003Cпорт>`. Например, `sudo lsof -i :80` покажет, какой процесс (обычно веб-сервер) слушает порт 80. Можно использовать имена служб: `sudo lsof -i :http`.",{"name":3764,"text":3765},"Фильтрация по протоколу (TCP/UDP) и состоянию","Уточните запрос: `sudo lsof -i tcp` покажет только TCP-соединения. `sudo lsof -i udp` — только UDP. Для соединений в состоянии LISTEN: `sudo lsof -i -s tcp:listen`. Это удобно для поиска слушающих сокетов.","PT20M",[3768,3769,3770,3771,3772,3773,3774,3775],"lsof команда linux","как использовать lsof","lsof примеры использования","найти процесс который использует порт","lsof что делает","просмотр открытых файлов linux","кайфы open files linux","диагностика блокировки порта lsof",{},[3778,3779,3780],"/guides/linux/netstat-command","/errors/linux/port-already-in-use","/guides/linux/systemd-journalctl","Гайды Linux",{"title":2487,"description":3732},"guides/linux/lsof-command","Команда lsof (list open files) — незаменимый инструмент системного администратора и разработчика для диагностики проблем с файлами, портами и процессами. Это руководство покажет, как эффективно использовать lsof для решения реальных задач.",[861,2481,3786,3787,150,874,3788],"troubleshooting","command line","network","guide","YRG3ZuPb1nEUUuYTz6dTFuI3JjY3QElPke4jR5vNCOM"]