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