[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"page-ru-/guides/linux/monitor-memory-usage":3,"mdc--rqsabx-key":1315,"mdc-jn8fff-key":1341,"mdc-mbz14u-key":1362,"mdc--gc3qhx-key":1413,"mdc--xacwx2-key":1429,"mdc--g5qvm7-key":1457,"mdc--l78nuh-key":1487,"mdc-1tlprb-key":1533,"mdc-y6krnn-key":1557,"mdc--8o2e3c-key":1581,"related-/guides/linux/monitor-disk-usage,/guides/linux/process-management-basics,/errors/linux/oom-killer":1603},{"id":4,"title":5,"appliesTo":6,"author":12,"body":13,"canonical":1246,"code":1246,"createdAt":1247,"description":1248,"difficulty":1249,"draft":1250,"estimatedTime":1251,"extension":1252,"faq":1253,"howToSteps":1266,"howToTotalTime":1285,"image":1246,"keywords":1286,"locale":1295,"meta":1296,"navigation":371,"path":1297,"platform":1298,"related":1299,"section":1303,"seo":1304,"severity":1246,"stem":1305,"summary":1306,"tags":1307,"twitterCreator":1246,"twitterSite":1246,"type":1313,"updatedAt":1247,"__hash__":1314},"content_ru/guides/linux/monitor-memory-usage.md","Мониторинг использования памяти в Linux: подробное руководство",[7,8,9,10,11],"Ubuntu 20.04+","CentOS 7+","Debian 10+","Fedora 35+","Арбитранные дистрибутивы с systemd","FixPedia Team",{"type":14,"value":15,"toc":1208},"minimark",[16,21,30,34,42,45,66,69,77,83,133,152,163,171,180,186,218,225,237,240,247,261,264,271,277,299,303,306,327,331,338,341,395,425,432,434,452,455,464,467,482,488,492,496,552,556,589,593,597,603,736,746,752,758,764,785,788,819,822,826,944,948,952,981,985,1130,1134,1147,1151,1173,1193,1204],[17,18,20],"h2",{"id":19},"введение","Введение",[22,23,24,25,29],"p",{},"Эффективный мониторинг оперативной памяти (RAM) — ключевой навык для администратора Linux и разработчика, работающего с серверами. Некорректное использование памяти приводит к замедлению системы, ошибкам ",[26,27,28],"code",{},"OOM Killer"," и аварийным перезагрузкам. В этом гайде вы узнаете, как с помощью встроенных и сторонних инструментов получить точную информацию о состоянии памяти, интерпретировать её и принимать обоснованные решения.",[17,31,33],{"id":32},"основные-команды-для-быстрого-просмотра","Основные команды для быстрого просмотра",[35,36,38,41],"h3",{"id":37},"free-общая-статистика",[26,39,40],{},"free",": общая статистика",[22,43,44],{},"Самый простой способ получить сводку:",[46,47,52],"pre",{"className":48,"code":49,"language":50,"meta":51,"style":51},"language-bash shiki shiki-themes github-light github-dark","free -h\n","bash","",[26,53,54],{"__ignoreMap":51},[55,56,59,62],"span",{"class":57,"line":58},"line",1,[55,60,40],{"class":61},"sScJk",[55,63,65],{"class":64},"sj4cs"," -h\n",[22,67,68],{},"Пример вывода:",[46,70,75],{"className":71,"code":73,"language":74},[72],"language-text","              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","text",[26,76,73],{"__ignoreMap":51},[22,78,79],{},[80,81,82],"strong",{},"Ключевые столбцы:",[84,85,86,95,106,113,121],"ul",{},[87,88,89,94],"li",{},[80,90,91],{},[26,92,93],{},"total"," — общий объём.",[87,96,97,102,103],{},[80,98,99],{},[26,100,101],{},"used"," — utilised memory (приложения + кэши). ",[80,104,105],{},"Не путать с реальным потреблением!",[87,107,108,112],{},[80,109,110],{},[26,111,40],{}," — полностью неиспользуемая память (в Linux это значение часто мало).",[87,114,115,120],{},[80,116,117],{},[26,118,119],{},"buff/cache"," — память, занятая кэшем диска и буферами.",[87,122,123,128,129,132],{},[80,124,125],{},[26,126,127],{},"available"," — ",[80,130,131],{},"самый важный показатель",". Оценка памяти, доступной для новых процессов без своппинга.",[134,135,136],"blockquote",{},[22,137,138,139,142,143,145,146,148,149,151],{},"💡 ",[80,140,141],{},"Совет:"," Всегда смотрите на ",[26,144,127],{},", а не на ",[26,147,40],{},". Высокий ",[26,150,119],{}," — это нормально и полезно.",[35,153,155,158,159,162],{"id":154},"top-htop-мониторинг-в-реальном-времени",[26,156,157],{},"top"," / ",[26,160,161],{},"htop",": мониторинг в реальном времени",[22,164,165,167,168,170],{},[26,166,157],{}," есть в любой системе. Для более удобного интерфейса установите ",[26,169,161],{},".",[46,172,174],{"className":48,"code":173,"language":50,"meta":51,"style":51},"htop\n",[26,175,176],{"__ignoreMap":51},[55,177,178],{"class":57,"line":58},[55,179,173],{"class":61},[22,181,182,183,185],{},"В ",[26,184,161],{},":",[84,187,188,205,212],{},[87,189,190,191,196,197,200,201,204],{},"Нажмите ",[80,192,193],{},[26,194,195],{},"F6"," → выберите сортировку по ",[26,198,199],{},"%MEM"," (процент от общей RAM) или ",[26,202,203],{},"RES"," (физическая память в KiB).",[87,206,207,208,211],{},"Столбец ",[26,209,210],{},"VIRT"," — виртуальная память (включая разделяемые библиотеки, своп).",[87,213,207,214,217],{},[26,215,216],{},"SHR"," — разделяемая память (например, общие библиотеки).",[35,219,221,224],{"id":220},"vmstat-сводка-по-виртуальной-памяти",[26,222,223],{},"vmstat",": сводка по виртуальной памяти",[46,226,228],{"className":48,"code":227,"language":50,"meta":51,"style":51},"vmstat -s\n",[26,229,230],{"__ignoreMap":51},[55,231,232,234],{"class":57,"line":58},[55,233,223],{"class":61},[55,235,236],{"class":64}," -s\n",[22,238,239],{},"Покажет детальную статистику, включая количество своп-ин и аут.",[35,241,243,246],{"id":242},"procmeminfo-сырые-данные-от-ядра",[26,244,245],{},"/proc/meminfo",": «сырые» данные от ядра",[46,248,250],{"className":48,"code":249,"language":50,"meta":51,"style":51},"cat /proc/meminfo\n",[26,251,252],{"__ignoreMap":51},[55,253,254,257],{"class":57,"line":58},[55,255,256],{"class":61},"cat",[55,258,260],{"class":259},"sZZnC"," /proc/meminfo\n",[22,262,263],{},"Это источник для всех вышеперечисленных утилит. Полезно для скриптов.",[35,265,267,270],{"id":266},"sar-исторические-данные-требует-настройки",[26,268,269],{},"sar",": исторические данные (требует настройки)",[22,272,273,274,185],{},"Если установлен пакет ",[26,275,276],{},"sysstat",[46,278,280],{"className":48,"code":279,"language":50,"meta":51,"style":51},"sar -r 1 3  # каждую секунду, 3 раза\n",[26,281,282],{"__ignoreMap":51},[55,283,284,286,289,292,295],{"class":57,"line":58},[55,285,269],{"class":61},[55,287,288],{"class":64}," -r",[55,290,291],{"class":64}," 1",[55,293,294],{"class":64}," 3",[55,296,298],{"class":297},"sJ8bj","  # каждую секунду, 3 раза\n",[17,300,302],{"id":301},"графические-утилиты","Графические утилиты",[22,304,305],{},"Для рабочих станций с GUI:",[84,307,308,318],{},[87,309,310,313,314,317],{},[80,311,312],{},"GNOME System Monitor"," (",[26,315,316],{},"gnome-system-monitor","): вкладка «Ресурсы» показывает графики памяти и свопа.",[87,319,320,313,323,326],{},[80,321,322],{},"KDE System Guard",[26,324,325],{},"ksysguard","): аналогичен, с возможностью добавления датчиков.",[17,328,330],{"id":329},"расширенные-инструменты","Расширенные инструменты",[35,332,334,337],{"id":333},"nmon-мощный-мониторинг-в-одном-окне",[26,335,336],{},"nmon"," — мощный мониторинг в одном окне",[22,339,340],{},"Установка:",[46,342,344],{"className":48,"code":343,"language":50,"meta":51,"style":51},"# Ubuntu/Debian\nsudo apt install nmon\n\n# RHEL/CentOS/Fedora\nsudo yum install nmon  # или dnf\n",[26,345,346,351,366,373,379],{"__ignoreMap":51},[55,347,348],{"class":57,"line":58},[55,349,350],{"class":297},"# Ubuntu/Debian\n",[55,352,354,357,360,363],{"class":57,"line":353},2,[55,355,356],{"class":61},"sudo",[55,358,359],{"class":259}," apt",[55,361,362],{"class":259}," install",[55,364,365],{"class":259}," nmon\n",[55,367,369],{"class":57,"line":368},3,[55,370,372],{"emptyLinePlaceholder":371},true,"\n",[55,374,376],{"class":57,"line":375},4,[55,377,378],{"class":297},"# RHEL/CentOS/Fedora\n",[55,380,382,384,387,389,392],{"class":57,"line":381},5,[55,383,356],{"class":61},[55,385,386],{"class":259}," yum",[55,388,362],{"class":259},[55,390,391],{"class":259}," nmon",[55,393,394],{"class":297},"  # или dnf\n",[22,396,397,398,400,401,406,407,412,413,418,419,424],{},"Запуск: ",[26,399,336],{},". Нажмите ",[80,402,403],{},[26,404,405],{},"m"," для memory-графиков, ",[80,408,409],{},[26,410,411],{},"c"," для CPU, ",[80,414,415],{},[26,416,417],{},"d"," для диска. ",[80,420,421],{},[26,422,423],{},"q"," — выход.",[35,426,428,431],{"id":427},"glances-кросс-платформенный-монитор-с-веб-интерфейсом",[26,429,430],{},"glances"," — кросс-платформенный монитор с веб-интерфейсом",[22,433,340],{},[46,435,437],{"className":48,"code":436,"language":50,"meta":51,"style":51},"pip3 install glances  # требует Python\n",[26,438,439],{"__ignoreMap":51},[55,440,441,444,446,449],{"class":57,"line":58},[55,442,443],{"class":61},"pip3",[55,445,362],{"class":259},[55,447,448],{"class":259}," glances",[55,450,451],{"class":297},"  # требует Python\n",[22,453,454],{},"Запуск:",[46,456,458],{"className":48,"code":457,"language":50,"meta":51,"style":51},"glances\n",[26,459,460],{"__ignoreMap":51},[55,461,462],{"class":57,"line":58},[55,463,457],{"class":61},[22,465,466],{},"Для удалённого мониторинга:",[46,468,470],{"className":48,"code":469,"language":50,"meta":51,"style":51},"glances -w  # запускает веб-сервер на порту 61208\n",[26,471,472],{"__ignoreMap":51},[55,473,474,476,479],{"class":57,"line":58},[55,475,430],{"class":61},[55,477,478],{"class":64}," -w",[55,480,481],{"class":297},"  # запускает веб-сервер на порту 61208\n",[22,483,484,485,170],{},"Затем откройте в браузере ",[26,486,487],{},"http://\u003Cваш_сервер>:61208",[17,489,491],{"id":490},"как-интерпретировать-показатели","Как интерпретировать показатели",[35,493,495],{"id":494},"распространённые-ошибки-новичков","Распространённые ошибки новичков",[497,498,499,510,531,539],"ol",{},[87,500,501,507,508,170],{},[80,502,503,504,506],{},"Свободная память (",[26,505,40],{},") близка к нулю"," — это нормально. Linux использует RAM для кэша. Смотрите на ",[26,509,127],{},[87,511,512,519,520,523,524,527,528,530],{},[80,513,514,515,518],{},"Своп (",[26,516,517],{},"swap",") активно используется"," — если ",[26,521,522],{},"si","/",[26,525,526],{},"so"," в ",[26,529,223],{}," постоянно не ноль, система активно своппит. Это признак нехватки RAM.",[87,532,533,538],{},[80,534,535,536],{},"Высокий ",[26,537,119],{}," — не проблема. Система освободит эту память, если процессу понадобится.",[87,540,541,548,549,551],{},[80,542,543,545,546],{},[26,544,203],{}," процесса больше, чем ",[26,547,210],{}," — обычно невозможно. Проверьте, не дублируется ли процесс в ",[26,550,157],{}," (например, потоки).",[35,553,555],{"id":554},"тревожные-сигналы","Тревожные сигналы",[84,557,558,565,575],{},[87,559,560,562,563,170],{},[26,561,127],{}," \u003C 10% от ",[26,564,93],{},[87,566,567,568,523,570,572,573,170],{},"Постоянный ",[26,569,522],{},[26,571,526],{}," > 0 в ",[26,574,223],{},[87,576,577,578,527,581,584,585,588],{},"Частые сообщения ",[26,579,580],{},"Out of memory",[26,582,583],{},"dmesg"," или логах (",[26,586,587],{},"journalctl -k | grep -i oom",").",[17,590,592],{"id":591},"автоматизация-мониторинга","Автоматизация мониторинга",[35,594,596],{"id":595},"простой-скрипт-для-отправки-предупреждений","Простой скрипт для отправки предупреждений",[22,598,599,600,185],{},"Создайте ",[26,601,602],{},"/usr/local/bin/memory_alert.sh",[46,604,606],{"className":48,"code":605,"language":50,"meta":51,"style":51},"#!/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",[26,607,608,613,629,653,686,709,730],{"__ignoreMap":51},[55,609,610],{"class":57,"line":58},[55,611,612],{"class":297},"#!/bin/bash\n",[55,614,615,619,623,626],{"class":57,"line":353},[55,616,618],{"class":617},"sVt8B","THRESHOLD",[55,620,622],{"class":621},"szBVR","=",[55,624,625],{"class":259},"90",[55,627,628],{"class":297},"  # процент\n",[55,630,631,634,636,639,641,644,647,650],{"class":57,"line":368},[55,632,633],{"class":617},"CURRENT",[55,635,622],{"class":621},[55,637,638],{"class":617},"$(",[55,640,40],{"class":61},[55,642,643],{"class":621}," |",[55,645,646],{"class":61}," awk",[55,648,649],{"class":259}," '/Mem:/ {printf(\"%.0f\"), $3/$2 * 100}'",[55,651,652],{"class":617},")\n",[55,654,655,658,661,664,667,669,672,675,678,680,683],{"class":57,"line":375},[55,656,657],{"class":621},"if",[55,659,660],{"class":617}," [ ",[55,662,663],{"class":259},"\"",[55,665,666],{"class":617},"$CURRENT",[55,668,663],{"class":259},[55,670,671],{"class":621}," -ge",[55,673,674],{"class":259}," \"",[55,676,677],{"class":617},"$THRESHOLD",[55,679,663],{"class":259},[55,681,682],{"class":617}," ]; ",[55,684,685],{"class":621},"then\n",[55,687,688,691,694,696,699,701,704,706],{"class":57,"line":381},[55,689,690],{"class":64},"    echo",[55,692,693],{"class":259}," \"Внимание: использование памяти ${",[55,695,633],{"class":617},[55,697,698],{"class":259},"}% (порог ${",[55,700,618],{"class":617},[55,702,703],{"class":259},"}%)\"",[55,705,643],{"class":621},[55,707,708],{"class":64}," \\\n",[55,710,712,715,718,721,724,727],{"class":57,"line":711},6,[55,713,714],{"class":61},"    mail",[55,716,717],{"class":64}," -s",[55,719,720],{"class":259}," \"Алерт: память на $(",[55,722,723],{"class":61},"hostname",[55,725,726],{"class":259},")\"",[55,728,729],{"class":259}," admin@example.com\n",[55,731,733],{"class":57,"line":732},7,[55,734,735],{"class":621},"fi\n",[22,737,738,739,313,742,745],{},"Добавьте в ",[26,740,741],{},"crontab",[26,743,744],{},"crontab -e","):",[46,747,750],{"className":748,"code":749,"language":74},[72],"*/5 * * * * /usr/local/bin/memory_alert.sh\n",[26,751,749],{"__ignoreMap":51},[35,753,755,756],{"id":754},"логирование-через-sar","Логирование через ",[26,757,269],{},[22,759,760,761,763],{},"Настройте ",[26,762,276],{}," (в большинстве дистрибутивов уже установлен):",[46,765,767],{"className":48,"code":766,"language":50,"meta":51,"style":51},"sudo systemctl enable --now sysstat\n",[26,768,769],{"__ignoreMap":51},[55,770,771,773,776,779,782],{"class":57,"line":58},[55,772,356],{"class":61},[55,774,775],{"class":259}," systemctl",[55,777,778],{"class":259}," enable",[55,780,781],{"class":64}," --now",[55,783,784],{"class":259}," sysstat\n",[22,786,787],{},"Данные будут собираться каждые 10 минут. Просмотр:",[46,789,791],{"className":48,"code":790,"language":50,"meta":51,"style":51},"sar -r -f /var/log/sa/sa$(date +%d)  # за сегодня\n",[26,792,793],{"__ignoreMap":51},[55,794,795,797,799,802,805,807,810,813,816],{"class":57,"line":58},[55,796,269],{"class":61},[55,798,288],{"class":64},[55,800,801],{"class":64}," -f",[55,803,804],{"class":259}," /var/log/sa/sa",[55,806,638],{"class":617},[55,808,809],{"class":61},"date",[55,811,812],{"class":259}," +%d",[55,814,815],{"class":617},")  ",[55,817,818],{"class":297},"# за сегодня\n",[820,821],"in-article-ad",{},[17,823,825],{"id":824},"сравнение-инструментов","Сравнение инструментов",[827,828,829,848],"table",{},[830,831,832],"thead",{},[833,834,835,839,842,845],"tr",{},[836,837,838],"th",{},"Инструмент",[836,840,841],{},"Плюсы",[836,843,844],{},"Минусы",[836,846,847],{},"Когда использовать",[849,850,851,867,884,899,914,929],"tbody",{},[833,852,853,858,861,864],{},[854,855,856],"td",{},[26,857,40],{},[854,859,860],{},"Простота, есть везде",[854,862,863],{},"Нет детализации по процессам",[854,865,866],{},"Быстрая проверка в скриптах",[833,868,869,875,878,881],{},[854,870,871,523,873],{},[26,872,157],{},[26,874,161],{},[854,876,877],{},"Интерактив, сортировка",[854,879,880],{},"Только снимок на момент запуска",[854,882,883],{},"Поиск «прожорливых» процессов",[833,885,886,890,893,896],{},[854,887,888],{},[26,889,223],{},[854,891,892],{},"Сводка по свопу, CPU",[854,894,895],{},"Мало деталей по памяти",[854,897,898],{},"Общая оценка нагрузки",[833,900,901,905,908,911],{},[854,902,903],{},[26,904,269],{},[854,906,907],{},"История, автоматический сбор",[854,909,910],{},"Требует настройки",[854,912,913],{},"Анализ трендов, пост-мортем",[833,915,916,920,923,926],{},[854,917,918],{},[26,919,336],{},[854,921,922],{},"Графики, все метрики в одном",[854,924,925],{},"Только консольный, сложный UI",[854,927,928],{},"Глубокий анализ в реальном времени",[833,930,931,935,938,941],{},[854,932,933],{},[26,934,430],{},[854,936,937],{},"Веб-интерфейс, кросс-платформа",[854,939,940],{},"Требует Python, больше ресурсов",[854,942,943],{},"Удалённый мониторинг нескольких серверов",[17,945,947],{"id":946},"дополнительные-возможности","Дополнительные возможности",[35,949,951],{"id":950},"мониторинг-памяти-конкретного-процесса","Мониторинг памяти конкретного процесса",[46,953,955],{"className":48,"code":954,"language":50,"meta":51,"style":51},"# Узнать, сколько памяти использует процесс с PID 1234\npmap -x 1234 | tail -1\n",[26,956,957,962],{"__ignoreMap":51},[55,958,959],{"class":57,"line":58},[55,960,961],{"class":297},"# Узнать, сколько памяти использует процесс с PID 1234\n",[55,963,964,967,970,973,975,978],{"class":57,"line":353},[55,965,966],{"class":61},"pmap",[55,968,969],{"class":64}," -x",[55,971,972],{"class":64}," 1234",[55,974,643],{"class":621},[55,976,977],{"class":61}," tail",[55,979,980],{"class":64}," -1\n",[35,982,984],{"id":983},"поиск-процессов-использующих-своп","Поиск процессов, использующих своп",[46,986,988],{"className":48,"code":987,"language":50,"meta":51,"style":51},"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",[26,989,990,1024,1063,1087,1120,1125],{"__ignoreMap":51},[55,991,992,995,998,1001,1004,1007,1010,1012,1015,1018,1021],{"class":57,"line":58},[55,993,994],{"class":621},"for",[55,996,997],{"class":617}," pid ",[55,999,1000],{"class":621},"in",[55,1002,1003],{"class":617}," $(",[55,1005,1006],{"class":61},"ls",[55,1008,1009],{"class":259}," /proc",[55,1011,643],{"class":621},[55,1013,1014],{"class":61}," grep",[55,1016,1017],{"class":259}," '^[0-9]'",[55,1019,1020],{"class":617},"); ",[55,1022,1023],{"class":621},"do\n",[55,1025,1026,1029,1031,1033,1036,1039,1042,1045,1048,1051,1054,1056,1058,1061],{"class":57,"line":353},[55,1027,1028],{"class":617},"    swap",[55,1030,622],{"class":621},[55,1032,638],{"class":617},[55,1034,1035],{"class":61},"grep",[55,1037,1038],{"class":259}," VmSwap",[55,1040,1041],{"class":259}," /proc/",[55,1043,1044],{"class":617},"$pid",[55,1046,1047],{"class":259},"/smaps",[55,1049,1050],{"class":621}," 2>",[55,1052,1053],{"class":259},"/dev/null",[55,1055,643],{"class":621},[55,1057,646],{"class":61},[55,1059,1060],{"class":259}," '{sum+=$2} END {print sum}'",[55,1062,652],{"class":617},[55,1064,1065,1068,1070,1072,1075,1077,1080,1083,1085],{"class":57,"line":368},[55,1066,1067],{"class":621},"    if",[55,1069,660],{"class":617},[55,1071,663],{"class":259},[55,1073,1074],{"class":617},"$swap",[55,1076,663],{"class":259},[55,1078,1079],{"class":621}," -gt",[55,1081,1082],{"class":64}," 0",[55,1084,682],{"class":617},[55,1086,685],{"class":621},[55,1088,1089,1092,1095,1097,1100,1102,1105,1108,1111,1114,1117],{"class":57,"line":375},[55,1090,1091],{"class":64},"        echo",[55,1093,1094],{"class":259}," \"PID ",[55,1096,1044],{"class":617},[55,1098,1099],{"class":259}," использует ${",[55,1101,517],{"class":617},[55,1103,1104],{"class":259},"}KiB свопа: $(",[55,1106,1107],{"class":61},"ps",[55,1109,1110],{"class":64}," -p",[55,1112,1113],{"class":617}," $pid",[55,1115,1116],{"class":64}," -o",[55,1118,1119],{"class":259}," comm=)\"\n",[55,1121,1122],{"class":57,"line":381},[55,1123,1124],{"class":621},"    fi\n",[55,1126,1127],{"class":57,"line":711},[55,1128,1129],{"class":621},"done\n",[35,1131,1133],{"id":1132},"проверка-фрагментации-памяти-только-для-numa-систем","Проверка фрагментации памяти (только для NUMA-систем)",[46,1135,1137],{"className":48,"code":1136,"language":50,"meta":51,"style":51},"numactl --hardware\n",[26,1138,1139],{"__ignoreMap":51},[55,1140,1141,1144],{"class":57,"line":58},[55,1142,1143],{"class":61},"numactl",[55,1145,1146],{"class":64}," --hardware\n",[17,1148,1150],{"id":1149},"заключение-последняя-содержательная-секция","Заключение (последняя содержательная секция)",[22,1152,1153,1154,1156,1157,1159,1160,1156,1162,1156,1164,1166,1167,1169,1170,1172],{},"Эффективный мониторинг памяти в Linux строится на двух китах: регулярный сбор базовой статистики (",[26,1155,40],{},", ",[26,1158,157],{},") и углублённый анализ при проблемах (",[26,1161,336],{},[26,1163,430],{},[26,1165,966],{},"). Не паникуйте при высоком показателе ",[26,1168,119],{}," — это оптимизация ядра. Сфокусируйтесь на ",[26,1171,127],{}," и активности свопа.",[22,1174,1175,1178,1179,1182,1183,1185,1186,1188,1189,1192],{},[80,1176,1177],{},"Начните с простого:"," добавьте в свой ежедневный чек-лист команду ",[26,1180,1181],{},"free -h"," и ",[26,1184,161],{}," для быстрой оценки. При возникновении проблем используйте ",[26,1187,336],{}," для записи сессии (",[26,1190,1191],{},"nmon -f -s 10 -c 100",") и последующего анализа.",[22,1194,1195,1196,1198,1199,1201,1202,170],{},"Помните: лучший мониторинг — тот, который настроен заранее и предупреждает об проблемах до их критического развития. Автоматизируйте сбор данных через ",[26,1197,269],{}," или ",[26,1200,430],{}," и настройте алерты на низкий ",[26,1203,127],{},[1205,1206,1207],"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 .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":51,"searchDepth":353,"depth":353,"links":1209},[1210,1211,1223,1224,1230,1234,1239,1240,1245],{"id":19,"depth":353,"text":20},{"id":32,"depth":353,"text":33,"children":1212},[1213,1215,1217,1219,1221],{"id":37,"depth":368,"text":1214},"free: общая статистика",{"id":154,"depth":368,"text":1216},"top / htop: мониторинг в реальном времени",{"id":220,"depth":368,"text":1218},"vmstat: сводка по виртуальной памяти",{"id":242,"depth":368,"text":1220},"/proc/meminfo: «сырые» данные от ядра",{"id":266,"depth":368,"text":1222},"sar: исторические данные (требует настройки)",{"id":301,"depth":353,"text":302},{"id":329,"depth":353,"text":330,"children":1225},[1226,1228],{"id":333,"depth":368,"text":1227},"nmon — мощный мониторинг в одном окне",{"id":427,"depth":368,"text":1229},"glances — кросс-платформенный монитор с веб-интерфейсом",{"id":490,"depth":353,"text":491,"children":1231},[1232,1233],{"id":494,"depth":368,"text":495},{"id":554,"depth":368,"text":555},{"id":591,"depth":353,"text":592,"children":1235},[1236,1237],{"id":595,"depth":368,"text":596},{"id":754,"depth":368,"text":1238},"Логирование через sar",{"id":824,"depth":353,"text":825},{"id":946,"depth":353,"text":947,"children":1241},[1242,1243,1244],{"id":950,"depth":368,"text":951},{"id":983,"depth":368,"text":984},{"id":1132,"depth":368,"text":1133},{"id":1149,"depth":353,"text":1150},null,"2026-02-14 10:59:29","Узнайте, как отслеживать потребление памяти в Linux с помощью командной строки и графических инструментов. Пошаговая инструкция с примерами для Ubuntu, CentOS и других дистрибутивов.","medium",false,"10-15 мин","md",[1254,1257,1260,1263],{"answer":1255,"question":1256},"Используйте `free -h`. Флаг `-h` выводит числа в удобочитаемом формате (ГиБ/МиБ).","Какой командой быстро увидеть общую статистику по памяти?",{"answer":1258,"question":1259},"`Available` — это примерный объём памяти, доступный для новых приложений без своппинга. Учитывает кэши и буферы, которые система может освободить. Это более точный показатель, чем `free`.","В выводе `free` что такое `available` и чем она отличается от `free`?",{"answer":1261,"question":1262},"Установите `htop` (`sudo apt install htop` или `sudo yum install htop`) и нажмите `F2` → «Display options» → включите «Detailed mem» и «Swap». Для графиков используйте `nmon` или веб-интерфейс `glances`.","Как мониторить память в реальном времени с графиком?",{"answer":1264,"question":1265},"Linux активно использует свободную RAM для кэширования диска (столбец `buff/cache`). Это нормально и ускоряет работу. Система автоматически освободит кэш, если приложению понадобится память.","Почему `used` в `free` огромный, а система не тормозит?",[1267,1270,1273,1276,1279,1282],{"name":1268,"text":1269},"Установите необходимые утилиты (опционально)","Для расширенного мониторинга установите `htop`, `nmon` или `glances` через менеджер пакетов вашего дистрибутива.",{"name":1271,"text":1272},"Проверьте общую статистику памяти","Выполните команду `free -h`. Обратите внимание на строки `Mem:` и `Swap:`.",{"name":1274,"text":1275},"Изучите динамику процессов","Запустите `top` или `htop`. Нажмите `F6` в `htop` и отсортируйте по столбцу `%MEM` или `RES`.",{"name":1277,"text":1278},"Проанализируйте детальную информацию по процессу","Найдите PID нужного процесса через `top` и выполните `pmap -x \u003CPID>`, чтобы увидеть детальное распределение памяти.",{"name":1280,"text":1281},"Включите сбор исторических данных","Установите пакет `sysstat` и запустите `sar -r 1 5` для сбора статистики каждую секунду, 5 раз.",{"name":1283,"text":1284},"Настройте графический мониторинг (если есть GUI)","Запустите `gnome-system-monitor` (GNOME) или `ksysguard` (KDE) для визуального контроля.","PT15M",[1287,1288,1289,1290,1291,1292,1293,1294],"мониторинг памяти linux","проверить использование оперативной памяти linux","команда free linux","top htop память","как посмотреть свободную память в линукс","визуализация использования памяти linux","sar память linux","/proc/meminfo расшифровка","ru_RU",{},"/guides/linux/monitor-memory-usage","linux",[1300,1301,1302],"/guides/linux/monitor-disk-usage","/guides/linux/process-management-basics","/errors/linux/oom-killer","Гайды Linux",{"title":5,"description":1248},"guides/linux/monitor-memory-usage","В этом гайде вы освоите практические методы мониторинга оперативной памяти в Linux: от базовых команд `free` и `top` до продвинутых утилит `nmon` и `glances`. Вы научитесь интерпретировать показатели и настроить автоматический сбор статистики.",[1308,1309,1298,1310,1311,1312,50],"мониторинг","память","command-line","sysadmin","performance","guide","SgXkJ7qm9QAcLpH_NvbCZzrc4YGuIL9Pt57zK8-UDqg",{"data":1316,"body":1317},{},{"type":1318,"children":1319},"root",[1320],{"type":1321,"tag":22,"props":1322,"children":1323},"element",{},[1324,1326,1331,1333,1339],{"type":74,"value":1325},"Используйте ",{"type":1321,"tag":26,"props":1327,"children":1329},{"className":1328},[],[1330],{"type":74,"value":1181},{"type":74,"value":1332},". Флаг ",{"type":1321,"tag":26,"props":1334,"children":1336},{"className":1335},[],[1337],{"type":74,"value":1338},"-h",{"type":74,"value":1340}," выводит числа в удобочитаемом формате (ГиБ/МиБ).",{"data":1342,"body":1343},{},{"type":1318,"children":1344},[1345],{"type":1321,"tag":22,"props":1346,"children":1347},{},[1348,1354,1356,1361],{"type":1321,"tag":26,"props":1349,"children":1351},{"className":1350},[],[1352],{"type":74,"value":1353},"Available",{"type":74,"value":1355}," — это примерный объём памяти, доступный для новых приложений без своппинга. Учитывает кэши и буферы, которые система может освободить. Это более точный показатель, чем ",{"type":1321,"tag":26,"props":1357,"children":1359},{"className":1358},[],[1360],{"type":74,"value":40},{"type":74,"value":170},{"data":1363,"body":1364},{},{"type":1318,"children":1365},[1366],{"type":1321,"tag":22,"props":1367,"children":1368},{},[1369,1371,1376,1377,1383,1384,1390,1392,1398,1400,1405,1407,1412],{"type":74,"value":1370},"Установите ",{"type":1321,"tag":26,"props":1372,"children":1374},{"className":1373},[],[1375],{"type":74,"value":161},{"type":74,"value":313},{"type":1321,"tag":26,"props":1378,"children":1380},{"className":1379},[],[1381],{"type":74,"value":1382},"sudo apt install htop",{"type":74,"value":1198},{"type":1321,"tag":26,"props":1385,"children":1387},{"className":1386},[],[1388],{"type":74,"value":1389},"sudo yum install htop",{"type":74,"value":1391},") и нажмите ",{"type":1321,"tag":26,"props":1393,"children":1395},{"className":1394},[],[1396],{"type":74,"value":1397},"F2",{"type":74,"value":1399}," → «Display options» → включите «Detailed mem» и «Swap». Для графиков используйте ",{"type":1321,"tag":26,"props":1401,"children":1403},{"className":1402},[],[1404],{"type":74,"value":336},{"type":74,"value":1406}," или веб-интерфейс ",{"type":1321,"tag":26,"props":1408,"children":1410},{"className":1409},[],[1411],{"type":74,"value":430},{"type":74,"value":170},{"data":1414,"body":1415},{},{"type":1318,"children":1416},[1417],{"type":1321,"tag":22,"props":1418,"children":1419},{},[1420,1422,1427],{"type":74,"value":1421},"Linux активно использует свободную RAM для кэширования диска (столбец ",{"type":1321,"tag":26,"props":1423,"children":1425},{"className":1424},[],[1426],{"type":74,"value":119},{"type":74,"value":1428},"). Это нормально и ускоряет работу. Система автоматически освободит кэш, если приложению понадобится память.",{"data":1430,"body":1431},{},{"type":1318,"children":1432},[1433],{"type":1321,"tag":22,"props":1434,"children":1435},{},[1436,1438,1443,1444,1449,1450,1455],{"type":74,"value":1437},"Для расширенного мониторинга установите ",{"type":1321,"tag":26,"props":1439,"children":1441},{"className":1440},[],[1442],{"type":74,"value":161},{"type":74,"value":1156},{"type":1321,"tag":26,"props":1445,"children":1447},{"className":1446},[],[1448],{"type":74,"value":336},{"type":74,"value":1198},{"type":1321,"tag":26,"props":1451,"children":1453},{"className":1452},[],[1454],{"type":74,"value":430},{"type":74,"value":1456}," через менеджер пакетов вашего дистрибутива.",{"data":1458,"body":1459},{},{"type":1318,"children":1460},[1461],{"type":1321,"tag":22,"props":1462,"children":1463},{},[1464,1466,1471,1473,1479,1480,1486],{"type":74,"value":1465},"Выполните команду ",{"type":1321,"tag":26,"props":1467,"children":1469},{"className":1468},[],[1470],{"type":74,"value":1181},{"type":74,"value":1472},". Обратите внимание на строки ",{"type":1321,"tag":26,"props":1474,"children":1476},{"className":1475},[],[1477],{"type":74,"value":1478},"Mem:",{"type":74,"value":1182},{"type":1321,"tag":26,"props":1481,"children":1483},{"className":1482},[],[1484],{"type":74,"value":1485},"Swap:",{"type":74,"value":170},{"data":1488,"body":1489},{},{"type":1318,"children":1490},[1491],{"type":1321,"tag":22,"props":1492,"children":1493},{},[1494,1496,1501,1502,1507,1508,1513,1514,1519,1521,1526,1527,1532],{"type":74,"value":1495},"Запустите ",{"type":1321,"tag":26,"props":1497,"children":1499},{"className":1498},[],[1500],{"type":74,"value":157},{"type":74,"value":1198},{"type":1321,"tag":26,"props":1503,"children":1505},{"className":1504},[],[1506],{"type":74,"value":161},{"type":74,"value":400},{"type":1321,"tag":26,"props":1509,"children":1511},{"className":1510},[],[1512],{"type":74,"value":195},{"type":74,"value":527},{"type":1321,"tag":26,"props":1515,"children":1517},{"className":1516},[],[1518],{"type":74,"value":161},{"type":74,"value":1520}," и отсортируйте по столбцу ",{"type":1321,"tag":26,"props":1522,"children":1524},{"className":1523},[],[1525],{"type":74,"value":199},{"type":74,"value":1198},{"type":1321,"tag":26,"props":1528,"children":1530},{"className":1529},[],[1531],{"type":74,"value":203},{"type":74,"value":170},{"data":1534,"body":1535},{},{"type":1318,"children":1536},[1537],{"type":1321,"tag":22,"props":1538,"children":1539},{},[1540,1542,1547,1549,1555],{"type":74,"value":1541},"Найдите PID нужного процесса через ",{"type":1321,"tag":26,"props":1543,"children":1545},{"className":1544},[],[1546],{"type":74,"value":157},{"type":74,"value":1548}," и выполните ",{"type":1321,"tag":26,"props":1550,"children":1552},{"className":1551},[],[1553],{"type":74,"value":1554},"pmap -x \u003CPID>",{"type":74,"value":1556},", чтобы увидеть детальное распределение памяти.",{"data":1558,"body":1559},{},{"type":1318,"children":1560},[1561],{"type":1321,"tag":22,"props":1562,"children":1563},{},[1564,1566,1571,1573,1579],{"type":74,"value":1565},"Установите пакет ",{"type":1321,"tag":26,"props":1567,"children":1569},{"className":1568},[],[1570],{"type":74,"value":276},{"type":74,"value":1572}," и запустите ",{"type":1321,"tag":26,"props":1574,"children":1576},{"className":1575},[],[1577],{"type":74,"value":1578},"sar -r 1 5",{"type":74,"value":1580}," для сбора статистики каждую секунду, 5 раз.",{"data":1582,"body":1583},{},{"type":1318,"children":1584},[1585],{"type":1321,"tag":22,"props":1586,"children":1587},{},[1588,1589,1594,1596,1601],{"type":74,"value":1495},{"type":1321,"tag":26,"props":1590,"children":1592},{"className":1591},[],[1593],{"type":74,"value":316},{"type":74,"value":1595}," (GNOME) или ",{"type":1321,"tag":26,"props":1597,"children":1599},{"className":1598},[],[1600],{"type":74,"value":325},{"type":74,"value":1602}," (KDE) для визуального контроля.",[1604,2576,4179],{"id":1605,"title":1606,"appliesTo":1607,"author":12,"body":1610,"canonical":1246,"code":1246,"createdAt":2519,"description":2520,"difficulty":1249,"draft":1250,"estimatedTime":2521,"extension":1252,"faq":2522,"howToSteps":2535,"howToTotalTime":2553,"image":1246,"keywords":2554,"locale":1295,"meta":2563,"navigation":371,"path":1300,"platform":1298,"related":2564,"section":1303,"seo":2568,"severity":1246,"stem":2569,"summary":2570,"tags":2571,"twitterCreator":1246,"twitterSite":1246,"type":1313,"updatedAt":2519,"__hash__":2575},"content_ru/guides/linux/monitor-disk-usage.md","Мониторинг дискового пространства в Linux: команды и практика",[7,1608,1609,10],"Debian 11+","CentOS 8+/RHEL 8+",{"type":14,"value":1611,"toc":2505},[1612,1616,1627,1631,1634,1681,1683,1687,1697,1708,1712,1718,1723,1740,1747,1760,1770,1838,1843,1862,1866,1872,1879,1886,1892,1962,1967,2001,2010,2014,2017,2140,2146,2174,2178,2193,2236,2246,2250,2255,2284,2288,2320,2330,2334,2350,2353,2367,2371,2502],[17,1613,1615],{"id":1614},"введение-зачем-это-нужно","Введение / Зачем это нужно",[22,1617,1618,1619,1622,1623,1626],{},"Постоянный мониторинг дискового пространства — критически важная задача для любого системного администратора или разработчика, работающего с серверами. Заполнение диска приводит к остановке служб, ошибкам записи логов и полной неработоспособности системы. Это руководство поможет вам не только ",[80,1620,1621],{},"диагностировать"," проблему, но и ",[80,1624,1625],{},"предотвратить"," её, освоив основные инструменты Linux для анализа использования диска на уровне файлов и каталогов. Вы научитесь быстро находить «пожирателей» места и принимать обоснованные решения по очистке.",[17,1628,1630],{"id":1629},"требования-подготовка","Требования / Подготовка",[22,1632,1633],{},"Перед началом убедитесь, что:",[497,1635,1636,1639,1661,1671],{},[87,1637,1638],{},"У вас есть доступ к терминалу Linux (через SSH или локально).",[87,1640,1641,1642,1644,1645,1156,1648,1156,1651,1654,1655,523,1658,170],{},"У вас есть права ",[80,1643,356],{}," (администратора) для анализа системных каталогов (",[26,1646,1647],{},"/var",[26,1649,1650],{},"/home",[26,1652,1653],{},"/usr",") и использования ",[26,1656,1657],{},"ncdu",[26,1659,1660],{},"lsof",[87,1662,1663,1664,1198,1667,1670],{},"Дистрибутив основан на ",[80,1665,1666],{},"Debian/Ubuntu",[80,1668,1669],{},"RHEL/CentOS/Fedora"," (команды универсальны, но названия пакетов могут отличаться).",[87,1672,1673,1674,1156,1676,1156,1678,1680],{},"Вы знаете, какой именно раздел (",[26,1675,523],{},[26,1677,1650],{},[26,1679,1647],{},") заполнился. Если нет — начните с первого шага.",[820,1682],{},[17,1684,1686],{"id":1685},"шаг-1-быстрый-обзор-состояния-всех-разделов","Шаг 1: быстрый обзор состояния всех разделов",[22,1688,1689,1690,1693,1694,170],{},"Первым делом получите общую картину. Команда ",[26,1691,1692],{},"df"," (disk free) показывает использование ",[80,1695,1696],{},"файловых систем/разделов",[46,1698,1700],{"className":48,"code":1699,"language":50,"meta":51,"style":51},"df -h\n",[26,1701,1702],{"__ignoreMap":51},[55,1703,1704,1706],{"class":57,"line":58},[55,1705,1692],{"class":61},[55,1707,65],{"class":64},[22,1709,1710],{},[80,1711,68],{},[46,1713,1716],{"className":1714,"code":1715,"language":74},[72],"Файл.система  Размер  Исп效益  Доступно Исп% Исп.на  Примонтировано в\n/dev/sda1        50G    45G     3.1G  94%   /        \n/dev/sda2       200G    150G     45G   77%   /home    \n/dev/sda3        20G     18G    1.5G   93%   /var\n",[26,1717,1715],{"__ignoreMap":51},[22,1719,1720],{},[80,1721,1722],{},"Что смотреть:",[84,1724,1725,1734],{},[87,1726,1727,1730,1731,170],{},[26,1728,1729],{},"Исп%"," — процент использования. Целевые кандидаты на очистку — разделы с ",[80,1732,1733],{},">85%",[87,1735,1736,1739],{},[26,1737,1738],{},"Примонтировано в"," — точка монтирования. Именно в неё нужно «проваливаться» для детального анализа.",[17,1741,1743,1744],{"id":1742},"шаг-2-детальный-анализ-проблемного-раздела-с-du","Шаг 2: детальный анализ проблемного раздела с ",[26,1745,1746],{},"du",[22,1748,1749,1750,1752,1753,1756,1757,1759],{},"Команда ",[26,1751,1746],{}," (disk usage) оценивает использование ",[80,1754,1755],{},"каталогов",". Она медленнее ",[26,1758,1692],{},", но даёт детализацию.",[22,1761,1762,1765,1766,1769],{},[80,1763,1764],{},"Правило:"," Анализируйте ",[80,1767,1768],{},"снизу вверх",". Сначала обзорка верхнего уровня, затем углубление.",[46,1771,1773],{"className":48,"code":1772,"language":50,"meta":51,"style":51},"# 1. Перейдите в корень проблемного раздела (например, /var)\ncd /var\n\n# 2. Покажите размер каждого элемента в текущей директории в читаемом виде (-h)\n#    Сортировка по убыванию размера (-r) и вывод только топ-20\nsudo du -sh * 2>/dev/null | sort -rh | head -n 20\n",[26,1774,1775,1780,1788,1792,1797,1802],{"__ignoreMap":51},[55,1776,1777],{"class":57,"line":58},[55,1778,1779],{"class":297},"# 1. Перейдите в корень проблемного раздела (например, /var)\n",[55,1781,1782,1785],{"class":57,"line":353},[55,1783,1784],{"class":64},"cd",[55,1786,1787],{"class":259}," /var\n",[55,1789,1790],{"class":57,"line":368},[55,1791,372],{"emptyLinePlaceholder":371},[55,1793,1794],{"class":57,"line":375},[55,1795,1796],{"class":297},"# 2. Покажите размер каждого элемента в текущей директории в читаемом виде (-h)\n",[55,1798,1799],{"class":57,"line":381},[55,1800,1801],{"class":297},"#    Сортировка по убыванию размера (-r) и вывод только топ-20\n",[55,1803,1804,1806,1809,1812,1815,1817,1819,1821,1824,1827,1829,1832,1835],{"class":57,"line":711},[55,1805,356],{"class":61},[55,1807,1808],{"class":259}," du",[55,1810,1811],{"class":64}," -sh",[55,1813,1814],{"class":64}," *",[55,1816,1050],{"class":621},[55,1818,1053],{"class":259},[55,1820,643],{"class":621},[55,1822,1823],{"class":61}," sort",[55,1825,1826],{"class":64}," -rh",[55,1828,643],{"class":621},[55,1830,1831],{"class":61}," head",[55,1833,1834],{"class":64}," -n",[55,1836,1837],{"class":64}," 20\n",[22,1839,1840],{},[80,1841,1842],{},"Ключевые флаги:",[84,1844,1845,1851,1856],{},[87,1846,1847,1850],{},[26,1848,1849],{},"-s"," — суммарный размер для каждого аргумента.",[87,1852,1853,1855],{},[26,1854,1338],{}," — человеко-читаемый (K, M, G).",[87,1857,1858,1861],{},[26,1859,1860],{},"2>/dev/null"," — подавление ошибок «Permission denied».",[22,1863,1864],{},[80,1865,68],{},[46,1867,1870],{"className":1868,"code":1869,"language":74},[72],"4.2G    log\n3.8G    cache\n1.2G    lib\n...\n",[26,1871,1869],{"__ignoreMap":51},[22,1873,1874,1875,1878],{},"Вы видите, что ",[26,1876,1877],{},"/var/log"," — главный «пожиратель». Теперь нужно углубиться в него.",[17,1880,1882,1883,1885],{"id":1881},"шаг-3-интерактивный-анализ-с-ncdu-рекомендуется","Шаг 3: интерактивный анализ с ",[26,1884,1657],{}," (рекомендуется)",[22,1887,1888,1889,1891],{},"Для удобства установите ",[80,1890,1657],{}," (NCurses Disk Usage). Это интерактивный текстовый браузер использования диска.",[46,1893,1895],{"className":48,"code":1894,"language":50,"meta":51,"style":51},"# Установка (Debian/Ubuntu)\nsudo apt update && sudo apt install ncdu\n\n# Установка (RHEL/CentOS 8+)\nsudo dnf install ncdu\n\n# Запуск для анализа раздела /var\nsudo ncdu /var\n",[26,1896,1897,1902,1923,1927,1932,1943,1947,1952],{"__ignoreMap":51},[55,1898,1899],{"class":57,"line":58},[55,1900,1901],{"class":297},"# Установка (Debian/Ubuntu)\n",[55,1903,1904,1906,1908,1911,1914,1916,1918,1920],{"class":57,"line":353},[55,1905,356],{"class":61},[55,1907,359],{"class":259},[55,1909,1910],{"class":259}," update",[55,1912,1913],{"class":617}," && ",[55,1915,356],{"class":61},[55,1917,359],{"class":259},[55,1919,362],{"class":259},[55,1921,1922],{"class":259}," ncdu\n",[55,1924,1925],{"class":57,"line":368},[55,1926,372],{"emptyLinePlaceholder":371},[55,1928,1929],{"class":57,"line":375},[55,1930,1931],{"class":297},"# Установка (RHEL/CentOS 8+)\n",[55,1933,1934,1936,1939,1941],{"class":57,"line":381},[55,1935,356],{"class":61},[55,1937,1938],{"class":259}," dnf",[55,1940,362],{"class":259},[55,1942,1922],{"class":259},[55,1944,1945],{"class":57,"line":711},[55,1946,372],{"emptyLinePlaceholder":371},[55,1948,1949],{"class":57,"line":732},[55,1950,1951],{"class":297},"# Запуск для анализа раздела /var\n",[55,1953,1955,1957,1960],{"class":57,"line":1954},8,[55,1956,356],{"class":61},[55,1958,1959],{"class":259}," ncdu",[55,1961,1787],{"class":259},[22,1963,1964],{},[80,1965,1966],{},"Как работать в ncdu:",[84,1968,1969,1979,1985,1990,1995],{},[87,1970,1971,1972,523,1975,1978],{},"Стрелки ",[26,1973,1974],{},"↑",[26,1976,1977],{},"↓"," — навигация.",[87,1980,1981,1984],{},[26,1982,1983],{},"Enter"," — войти в каталог.",[87,1986,1987,1989],{},[26,1988,417],{}," — удалить выбранный файл/каталог (будет запрос подтверждения!).",[87,1991,1992,1994],{},[26,1993,423],{}," — выйти.",[87,1996,190,1997,2000],{},[26,1998,1999],{},"?"," для полной справки.",[22,2002,2003,2005,2006,2009],{},[26,2004,1657],{}," автоматически сканирует выбранный каталог и показывает ",[80,2007,2008],{},"процентное отношение"," к общему размеру, что очень наглядно.",[17,2011,2013],{"id":2012},"шаг-4-поиск-конкретных-больших-файлов","Шаг 4: поиск конкретных больших файлов",[22,2015,2016],{},"Иногда проблема не в каталогах, а в одном-двух огромных файлах (например, файл дампа базы данных, лог за годы, забытый архив).",[46,2018,2020],{"className":48,"code":2019,"language":50,"meta":51,"style":51},"# Поиск файлов больше 100МБ в /var/log и вывод топ-10 по размеру\nsudo find /var/log -type f -size +100M -exec du -h {} + 2>/dev/null | sort -rh | head -n 10\n\n# Более быстрый вариант (только имя и размер, без du)\nsudo find /var/log -type f -size +100M -exec ls -lh {} + | awk '{ print $5, $9 }' | sort -rh | head -n 10\n",[26,2021,2022,2027,2082,2086,2091],{"__ignoreMap":51},[55,2023,2024],{"class":57,"line":58},[55,2025,2026],{"class":297},"# Поиск файлов больше 100МБ в /var/log и вывод топ-10 по размеру\n",[55,2028,2029,2031,2034,2037,2040,2043,2046,2049,2052,2054,2057,2060,2063,2065,2067,2069,2071,2073,2075,2077,2079],{"class":57,"line":353},[55,2030,356],{"class":61},[55,2032,2033],{"class":259}," find",[55,2035,2036],{"class":259}," /var/log",[55,2038,2039],{"class":64}," -type",[55,2041,2042],{"class":259}," f",[55,2044,2045],{"class":64}," -size",[55,2047,2048],{"class":259}," +100M",[55,2050,2051],{"class":64}," -exec",[55,2053,1808],{"class":259},[55,2055,2056],{"class":64}," -h",[55,2058,2059],{"class":259}," {}",[55,2061,2062],{"class":259}," +",[55,2064,1050],{"class":621},[55,2066,1053],{"class":259},[55,2068,643],{"class":621},[55,2070,1823],{"class":61},[55,2072,1826],{"class":64},[55,2074,643],{"class":621},[55,2076,1831],{"class":61},[55,2078,1834],{"class":64},[55,2080,2081],{"class":64}," 10\n",[55,2083,2084],{"class":57,"line":368},[55,2085,372],{"emptyLinePlaceholder":371},[55,2087,2088],{"class":57,"line":375},[55,2089,2090],{"class":297},"# Более быстрый вариант (только имя и размер, без du)\n",[55,2092,2093,2095,2097,2099,2101,2103,2105,2107,2109,2112,2115,2117,2119,2121,2123,2126,2128,2130,2132,2134,2136,2138],{"class":57,"line":381},[55,2094,356],{"class":61},[55,2096,2033],{"class":259},[55,2098,2036],{"class":259},[55,2100,2039],{"class":64},[55,2102,2042],{"class":259},[55,2104,2045],{"class":64},[55,2106,2048],{"class":259},[55,2108,2051],{"class":64},[55,2110,2111],{"class":259}," ls",[55,2113,2114],{"class":64}," -lh",[55,2116,2059],{"class":259},[55,2118,2062],{"class":259},[55,2120,643],{"class":621},[55,2122,646],{"class":61},[55,2124,2125],{"class":259}," '{ print $5, $9 }'",[55,2127,643],{"class":621},[55,2129,1823],{"class":61},[55,2131,1826],{"class":64},[55,2133,643],{"class":621},[55,2135,1831],{"class":61},[55,2137,1834],{"class":64},[55,2139,2081],{"class":64},[22,2141,2142,2145],{},[80,2143,2144],{},"Для поиска по всему разделу"," (может быть долгим):",[46,2147,2149],{"className":48,"code":2148,"language":50,"meta":51,"style":51},"sudo find /var -type f -size +500M 2>/dev/null\n",[26,2150,2151],{"__ignoreMap":51},[55,2152,2153,2155,2157,2160,2162,2164,2166,2169,2171],{"class":57,"line":58},[55,2154,356],{"class":61},[55,2156,2033],{"class":259},[55,2158,2159],{"class":259}," /var",[55,2161,2039],{"class":64},[55,2163,2042],{"class":259},[55,2165,2045],{"class":64},[55,2167,2168],{"class":259}," +500M",[55,2170,1050],{"class":621},[55,2172,2173],{"class":259},"/dev/null\n",[17,2175,2177],{"id":2176},"шаг-5-поиск-висячих-удалённых-файлов","Шаг 5: поиск «висячих» удалённых файлов",[22,2179,2180,2181,2184,2185,2188,2189,2192],{},"Ситуация: вы удалили большой файл через ",[26,2182,2183],{},"rm",", но место ",[80,2186,2187],{},"не освободилось",". Это происходит, если процесс всё ещё держит ",[80,2190,2191],{},"дескриптор"," удалённого файла.",[46,2194,2196],{"className":48,"code":2195,"language":50,"meta":51,"style":51},"# Показать все открытые удалённые (deleted) файлы в системе\nsudo lsof | grep '(deleted)'\n\n# Пример вывода:\n# COMMAND   PID   USER   FD   TYPE DEVICE SIZE/OFF   NODE NAME\n# java     1234   app    rtd    REG    8,2   10.0G 123456 /var/log/app.log (deleted)\n",[26,2197,2198,2203,2217,2221,2226,2231],{"__ignoreMap":51},[55,2199,2200],{"class":57,"line":58},[55,2201,2202],{"class":297},"# Показать все открытые удалённые (deleted) файлы в системе\n",[55,2204,2205,2207,2210,2212,2214],{"class":57,"line":353},[55,2206,356],{"class":61},[55,2208,2209],{"class":259}," lsof",[55,2211,643],{"class":621},[55,2213,1014],{"class":61},[55,2215,2216],{"class":259}," '(deleted)'\n",[55,2218,2219],{"class":57,"line":368},[55,2220,372],{"emptyLinePlaceholder":371},[55,2222,2223],{"class":57,"line":375},[55,2224,2225],{"class":297},"# Пример вывода:\n",[55,2227,2228],{"class":57,"line":381},[55,2229,2230],{"class":297},"# COMMAND   PID   USER   FD   TYPE DEVICE SIZE/OFF   NODE NAME\n",[55,2232,2233],{"class":57,"line":711},[55,2234,2235],{"class":297},"# java     1234   app    rtd    REG    8,2   10.0G 123456 /var/log/app.log (deleted)\n",[22,2237,2238,2241,2242,2245],{},[80,2239,2240],{},"Решение:"," Перезапустите процесс (",[26,2243,2244],{},"PID 1234"," в примере). После этого место освободится.",[17,2247,2249],{"id":2248},"шаг-6-проверка-места-занятого-кэшем-пакетного-менеджера","Шаг 6: проверка места, занятого кэшем пакетного менеджера",[22,2251,2252,2253,185],{},"Для ",[80,2254,1666],{},[46,2256,2258],{"className":48,"code":2257,"language":50,"meta":51,"style":51},"sudo apt clean        # Удаляет все кэшированные .deb файлы из /var/cache/apt/archives\nsudo apt autoremove   # Удаляет зависимости, установленные автоматически и больше не нужные\n",[26,2259,2260,2272],{"__ignoreMap":51},[55,2261,2262,2264,2266,2269],{"class":57,"line":58},[55,2263,356],{"class":61},[55,2265,359],{"class":259},[55,2267,2268],{"class":259}," clean",[55,2270,2271],{"class":297},"        # Удаляет все кэшированные .deb файлы из /var/cache/apt/archives\n",[55,2273,2274,2276,2278,2281],{"class":57,"line":353},[55,2275,356],{"class":61},[55,2277,359],{"class":259},[55,2279,2280],{"class":259}," autoremove",[55,2282,2283],{"class":297},"   # Удаляет зависимости, установленные автоматически и больше не нужные\n",[22,2285,2252,2286,185],{},[80,2287,1669],{},[46,2289,2291],{"className":48,"code":2290,"language":50,"meta":51,"style":51},"sudo yum clean all    # Очищает весь кэш yum/dnf\nsudo package-cleanup --leaves  # Показывает «осиротевшие» пакеты (требуется установка yum-utils)\n",[26,2292,2293,2307],{"__ignoreMap":51},[55,2294,2295,2297,2299,2301,2304],{"class":57,"line":58},[55,2296,356],{"class":61},[55,2298,386],{"class":259},[55,2300,2268],{"class":259},[55,2302,2303],{"class":259}," all",[55,2305,2306],{"class":297},"    # Очищает весь кэш yum/dnf\n",[55,2308,2309,2311,2314,2317],{"class":57,"line":353},[55,2310,356],{"class":61},[55,2312,2313],{"class":259}," package-cleanup",[55,2315,2316],{"class":64}," --leaves",[55,2318,2319],{"class":297},"  # Показывает «осиротевшие» пакеты (требуется установка yum-utils)\n",[22,2321,2322,2325,2326,2329],{},[80,2323,2324],{},"Важно:"," Не выполняйте ",[26,2327,2328],{},"clean"," на продакшн-сервере без понимания последствий. Это ускорит будущие обновления, но может потребовать переустановки пакетов.",[17,2331,2333],{"id":2332},"проверка-результата","Проверка результата",[22,2335,2336,2337,1548,2340,2343,2344,2346,2347,588],{},"После выполнения очищающих действий вернитесь к ",[80,2338,2339],{},"Шагу 1",[26,2341,2342],{},"df -h"," снова. Убедитесь, что ",[26,2345,1729],{}," для проблемного раздела снизился до безопасного уровня (рекомендуется ",[80,2348,2349],{},"\u003C80%",[22,2351,2352],{},"Также можно проверить изменение в конкретном каталоге:",[46,2354,2356],{"className":48,"code":2355,"language":50,"meta":51,"style":51},"du -sh /var/log\n",[26,2357,2358],{"__ignoreMap":51},[55,2359,2360,2362,2364],{"class":57,"line":58},[55,2361,1746],{"class":61},[55,2363,1811],{"class":64},[55,2365,2366],{"class":259}," /var/log\n",[17,2368,2370],{"id":2369},"возможные-проблемы","Возможные проблемы",[497,2372,2373,2407,2449,2477],{},[87,2374,2375,2382],{},[80,2376,2377,2379,2380,1999],{},[26,2378,1746],{}," показывает меньше, чем ",[26,2381,1692],{},[84,2383,2384,2396],{},[87,2385,2386,2389,2390,2392,2393,2395],{},[80,2387,2388],{},"Причина:"," Файлы, удалённые, но всё ещё открытые процессами (см. Шаг 5). Или использование ",[26,2391,1746],{}," без ",[26,2394,356],{}," (вы не видите файлы других пользователей).",[87,2397,2398,2400,2401,2404,2405,170],{},[80,2399,2240],{}," Используйте ",[26,2402,2403],{},"sudo du"," и ищите «deleted» файлы через ",[26,2406,1660],{},[87,2408,2409,2417],{},[80,2410,2411,523,2413,2416],{},[26,2412,1657],{},[26,2414,2415],{},"find"," зависает или очень долгий?",[84,2418,2419,2431],{},[87,2420,2421,2423,2424,1156,2427,2430],{},[80,2422,2388],{}," Анализ огромного количества мелких файлов (например, ",[26,2425,2426],{},"/proc",[26,2428,2429],{},"/sys",", сетевые файловые системы).",[87,2432,2433,2435,2436,2439,2440,2442,2443,313,2446,588],{},[80,2434,2240],{}," Всегда указывайте конкретный путь для анализа (",[26,2437,2438],{},"ncdu /var","), а не корень ",[26,2441,523],{},". Исключите монтированные файловые системы флагом ",[26,2444,2445],{},"-x",[26,2447,2448],{},"sudo du -shx /",[87,2450,2451,2459],{},[80,2452,2453,2454,1198,2456,2458],{},"Не могу удалить файл из ",[26,2455,1657],{},[26,2457,2183],{}," — «Permission denied»",[84,2460,2461,2466],{},[87,2462,2463,2465],{},[80,2464,2388],{}," Файл принадлежит другому пользователю или системному процессу.",[87,2467,2468,2400,2470,2472,2473,2476],{},[80,2469,2240],{},[26,2471,356],{}," для удаления (",[26,2474,2475],{},"sudo rm путь/к/файлу","). Будьте осторожны!",[87,2478,2479,2482],{},[80,2480,2481],{},"Очистка логов не помогла — место вернулось через день",[84,2483,2484,2489],{},[87,2485,2486,2488],{},[80,2487,2388],{}," Приложение продолжает бесконтрольно писать логи. Увеличился ли размер одного файла или появились новые?",[87,2490,2491,2493,2494,2497,2498,2501],{},[80,2492,2240],{}," Настройте ротацию логов (",[26,2495,2496],{},"logrotate",") для проблемного приложения. Найдите конфиг в ",[26,2499,2500],{},"/etc/logrotate.d/"," или настройте в самом приложении.",[1205,2503,2504],{},"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 .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}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}",{"title":51,"searchDepth":353,"depth":353,"links":2506},[2507,2508,2509,2510,2512,2514,2515,2516,2517,2518],{"id":1614,"depth":353,"text":1615},{"id":1629,"depth":353,"text":1630},{"id":1685,"depth":353,"text":1686},{"id":1742,"depth":353,"text":2511},"Шаг 2: детальный анализ проблемного раздела с du",{"id":1881,"depth":353,"text":2513},"Шаг 3: интерактивный анализ с ncdu (рекомендуется)",{"id":2012,"depth":353,"text":2013},{"id":2176,"depth":353,"text":2177},{"id":2248,"depth":353,"text":2249},{"id":2332,"depth":353,"text":2333},{"id":2369,"depth":353,"text":2370},"2026-02-15 20:27:29","Узнайте, как эффективно отслеживать использование диска в Linux с помощью df, du и ncdu. Пошаговая инструкция с примерами для Ubuntu, CentOS и других дистрибутивов.","15-30 мин",[2523,2526,2529,2532],{"question":2524,"answer":2525},"Как быстро посмотреть свободное место на всех разделах?","Используйте команду `df -h`. Флаг `-h` показывает размеры в удобочитаемом формате (ГБ, МБ).",{"question":2527,"answer":2528},"Как найти самые большие каталоги в текущей папке?","Выполните `du -sh * | sort -rh | head -n 10`. Эта цепочка команд сортирует каталоги по убыванию размера и показывает топ-10.",{"question":2530,"answer":2531},"Можно ли мониторить диск в реальном времени?","Да, используйте `watch -n 5 df -h` для обновления каждые 5 секунд или установите `ncdu` для интерактивного анализа.",{"question":2533,"answer":2534},"Почему `df` показывает меньше места, чем есть на самом деле?","Чаще всего это резервирование места под root (обычно 5%) или метаданные файловой системы (например, для ext4).",[2536,2538,2541,2544,2547,2550],{"name":1268,"text":2537},"Убедитесь, что установлены `ncdu` и `lsof`. На Debian/Ubuntu: `sudo apt install ncdu lsof`. На RHEL/CentOS: `sudo yum install ncdu lsof`.",{"name":2539,"text":2540},"Просмотрите общую картину по разделам","Запустите `df -h`. Обратите внимание на столбцы `Size`, `Used` и `Use%`. Раздел с `Use%` близким к 100% требует внимания.",{"name":2542,"text":2543},"Найдите крупнейшие каталоги в проблемном разделе","Сменитесь на каталог раздела (например, `cd /var`) и выполните `du -sh * 2>/dev/null | sort -rh | head -n 20`. Флаг `2>/dev/null` скрывает ошибки доступа.",{"name":2545,"text":2546},"Используйте ncdu для интерактивного анализа","В корне проблемного раздела запустите `sudo ncdu`. Это покажет детальную иерархию с возможностью навигации. Нажмите `?` для справки.",{"name":2548,"text":2549},"Найдите конкретные большие файлы","В каталоге выполните `find . -type f -exec du -h {} + 2>/dev/null | sort -rh | head -n 20`. Для поиска по всему разделу: `sudo find /path -type f -size +100M`.",{"name":2551,"text":2552},"Проверьте, какие процессы удерживают удалённые файлы","Если удалили большой файл, но место не освободилось, найдите процесс: `sudo lsof | grep '(deleted)'`. Перезапустите проблемный процесс.","PT20M",[2555,2556,2557,2558,2559,2560,2561,2562],"мониторинг диска linux","проверить свободное место linux","команда df du","найти большие файлы linux","очистить диск linux","ncdu утилита","диск заполнен linux что делать","анализ использования диска",{},[2565,2566,2567],"/guides/linux/clean-disk-space","/errors/linux/no-space-left-on-device","/guides/linux/automate-disk-cleanup",{"title":1606,"description":2520},"guides/linux/monitor-disk-usage","В этом руководстве вы освоите ключевые утилиты Linux для анализа дискового пространства, научитесь находить большие файлы и каталоги, а также настроите базовый мониторинг.",[2572,1308,2573,1692,1746,2574,1311],"гайды linux","дисковое пространство","terminal","MmnAiz30Ij1vV0QZ34mDKBsQNA5h7jla0XV-bW1SMAY",{"id":2577,"title":2578,"appliesTo":2579,"author":12,"body":2583,"canonical":1246,"code":1246,"createdAt":4123,"description":4124,"difficulty":1249,"draft":1250,"estimatedTime":2521,"extension":1252,"faq":4125,"howToSteps":4138,"howToTotalTime":2553,"image":1246,"keywords":4157,"locale":1295,"meta":4166,"navigation":371,"path":1301,"platform":1298,"related":4167,"section":1303,"seo":4171,"severity":1246,"stem":4172,"summary":4173,"tags":4174,"twitterCreator":1246,"twitterSite":1246,"type":1313,"updatedAt":4123,"__hash__":4178},"content_ru/guides/linux/process-management-basics.md","Управление процессами в Linux: от базовых команд до systemd",[2580,1608,2581,2582],"Ubuntu 22.04+","CentOS Stream/RHEL 8+","Linux с systemd",{"type":14,"value":2584,"toc":4086},[2585,2589,2592,2606,2619,2623,2629,2634,2639,2656,2658,2686,2703,2726,2738,2771,2789,2797,2802,2809,2851,2864,2868,2871,2875,2878,2905,2924,2945,2950,2954,2961,2975,2979,2982,2995,3004,3008,3012,3019,3126,3139,3143,3217,3221,3224,3321,3332,3336,3340,3347,3371,3374,3378,3412,3416,3425,3484,3488,3493,3497,3667,3671,3758,3760,3764,3771,3781,3840,3850,3856,3859,3925,3934,3937,3972,3989,3993,4076,4083],[17,2586,2588],{"id":2587},"введение-зачем-управлять-процессами","Введение: зачем управлять процессами?",[22,2590,2591],{},"Каждая запущенная программа в Linux — это процесс. Управление ими — одна из ключевых задач системного администратора и разработчика. Нужно ли вам:",[84,2593,2594,2597,2600,2603],{},[87,2595,2596],{},"Найти и завершить \"зависший\" процесс, который съедает всю память?",[87,2598,2599],{},"Узнать, какой именно процесс слушает сетевой порт?",[87,2601,2602],{},"Запустить задачу в фоне, чтобы закрыть терминал?",[87,2604,2605],{},"Настроить автозапуск важного сервиса?",[22,2607,2608,2609,1182,2611,2614,2615,2618],{},"Этот гайд покрывает всё — от базовых команд ",[26,2610,1107],{},[26,2612,2613],{},"kill"," до современного менеджера системных сервисов ",[26,2616,2617],{},"systemd",". Вы получите практические навыки, которые пригодятся ежедневно.",[17,2620,2622],{"id":2621},"базовый-мониторинг-ps-top-и-htop","Базовый мониторинг: ps, top и htop",[35,2624,1749,2626,2628],{"id":2625},"команда-ps-снимок-процессов",[26,2627,1107],{}," — снимок процессов",[22,2630,2631,2633],{},[26,2632,1107],{}," (process status) показывает статический список процессов на момент запуска команды.",[22,2635,2636],{},[80,2637,2638],{},"Самые полезные варианты:",[46,2640,2642],{"className":48,"code":2641,"language":50,"meta":51,"style":51},"# Показать все процессы всех пользователей в \"полном\" формате (BSD-стиль)\nps aux\n",[26,2643,2644,2649],{"__ignoreMap":51},[55,2645,2646],{"class":57,"line":58},[55,2647,2648],{"class":297},"# Показать все процессы всех пользователей в \"полном\" формате (BSD-стиль)\n",[55,2650,2651,2653],{"class":57,"line":353},[55,2652,1107],{"class":61},[55,2654,2655],{"class":259}," aux\n",[22,2657,82],{},[84,2659,2660,2666,2672,2680],{},[87,2661,2662,2665],{},[26,2663,2664],{},"USER"," — владелец процесса.",[87,2667,2668,2671],{},[26,2669,2670],{},"PID"," — уникальный идентификатор процесса (главное, что нужно для управления).",[87,2673,2674,1156,2677,2679],{},[26,2675,2676],{},"%CPU",[26,2678,199],{}," — потребление процессорного времени и памяти.",[87,2681,2682,2685],{},[26,2683,2684],{},"COMMAND"," — команда, запустившая процесс.",[46,2687,2689],{"className":48,"code":2688,"language":50,"meta":51,"style":51},"# Альтернативный, более детальный формат (POSIX-стиль)\nps -ef\n",[26,2690,2691,2696],{"__ignoreMap":51},[55,2692,2693],{"class":57,"line":58},[55,2694,2695],{"class":297},"# Альтернативный, более детальный формат (POSIX-стиль)\n",[55,2697,2698,2700],{"class":57,"line":353},[55,2699,1107],{"class":61},[55,2701,2702],{"class":64}," -ef\n",[22,2704,2705,2706,1156,2709,1156,2711,2714,2715,2718,2719,2722,2723,170],{},"Здесь столбцы: ",[26,2707,2708],{},"UID",[26,2710,2670],{},[26,2712,2713],{},"PPID"," (PID родителя), ",[26,2716,2717],{},"C"," (коэффициент использования CPU), ",[26,2720,2721],{},"STIME"," (время запуска), ",[26,2724,2725],{},"CMD",[22,2727,2728,2731,2732,2734,2735,2737],{},[80,2729,2730],{},"Фильтрация:"," Всегда комбинируйте ",[26,2733,1107],{}," с ",[26,2736,1035],{}," для поиска.",[46,2739,2741],{"className":48,"code":2740,"language":50,"meta":51,"style":51},"ps aux | grep nginx\nps -ef | grep python3\n",[26,2742,2743,2757],{"__ignoreMap":51},[55,2744,2745,2747,2750,2752,2754],{"class":57,"line":58},[55,2746,1107],{"class":61},[55,2748,2749],{"class":259}," aux",[55,2751,643],{"class":621},[55,2753,1014],{"class":61},[55,2755,2756],{"class":259}," nginx\n",[55,2758,2759,2761,2764,2766,2768],{"class":57,"line":353},[55,2760,1107],{"class":61},[55,2762,2763],{"class":64}," -ef",[55,2765,643],{"class":621},[55,2767,1014],{"class":61},[55,2769,2770],{"class":259}," python3\n",[134,2772,2773],{},[22,2774,2775,2776,2778,2779,2781,2782,2785,2786,170],{},"⚠️ ",[80,2777,2324],{}," ",[26,2780,1035],{}," сам появится в выводе. Используйте ",[26,2783,2784],{},"pgrep"," для чистого поиска по имени: ",[26,2787,2788],{},"pgrep -l nginx",[35,2790,2792,1182,2794,2796],{"id":2791},"top-и-htop-интерактивный-мониторинг",[26,2793,157],{},[26,2795,161],{}," — интерактивный мониторинг",[22,2798,2799,2801],{},[26,2800,157],{}," — классическая утилита, которая обновляет список процессов в реальном времени (по умолчанию каждые 3 секунды).",[22,2803,2804],{},[80,2805,2806,2807,185],{},"Основные клавиши в ",[26,2808,157],{},[84,2810,2811,2817,2823,2829,2835,2841,2847],{},[87,2812,2813,2816],{},[26,2814,2815],{},"P"," — сортировка по загрузке CPU (по умолчанию).",[87,2818,2819,2822],{},[26,2820,2821],{},"M"," — сортировка по использованию памяти.",[87,2824,2825,2828],{},[26,2826,2827],{},"N"," — сортировка по PID.",[87,2830,2831,2834],{},[26,2832,2833],{},"k"," — убить процесс (запросит PID и сигнал).",[87,2836,2837,2840],{},[26,2838,2839],{},"r"," — изменить приоритет (renice) процесса.",[87,2842,2843,2846],{},[26,2844,2845],{},"u"," — показать процессы только указанного пользователя.",[87,2848,2849,1994],{},[26,2850,423],{},[22,2852,2853,2855,2856,2858,2859,158,2861,2863],{},[26,2854,161],{}," — более удобная и наглядная цветовая альтернатива ",[26,2857,157],{},". Она часто не установлена по умолчанию, но её стоит установить (",[26,2860,1382],{},[26,2862,1389],{},"). Позволяет управлять процессами прямо из интерфейса (F9 для kill, F5 для дерева, F6 для сортировки).",[17,2865,2867],{"id":2866},"поиск-процессов-не-только-по-имени","Поиск процессов: не только по имени",[22,2869,2870],{},"Иногда нужно найти процесс не по его имени, а по другим признакам.",[35,2872,2874],{"id":2873},"по-открытому-порту-или-сокету","По открытому порту или сокету",[22,2876,2877],{},"Частая задача: \"Кто слушает порт 80?\".",[46,2879,2881],{"className":48,"code":2880,"language":50,"meta":51,"style":51},"# Рекомендуемый современный способ (из пакета iproute2)\nsudo ss -tulpn | grep :80\n",[26,2882,2883,2888],{"__ignoreMap":51},[55,2884,2885],{"class":57,"line":58},[55,2886,2887],{"class":297},"# Рекомендуемый современный способ (из пакета iproute2)\n",[55,2889,2890,2892,2895,2898,2900,2902],{"class":57,"line":353},[55,2891,356],{"class":61},[55,2893,2894],{"class":259}," ss",[55,2896,2897],{"class":64}," -tulpn",[55,2899,643],{"class":621},[55,2901,1014],{"class":61},[55,2903,2904],{"class":259}," :80\n",[22,2906,2907,2908,2911,2912,2915,2916,2919,2920,2923],{},"Опции: ",[26,2909,2910],{},"-t"," (TCP), ",[26,2913,2914],{},"-u"," (UDP), ",[26,2917,2918],{},"-l"," (только слушающие), ",[26,2921,2922],{},"-p"," (показать процесс/программу).",[46,2925,2927],{"className":48,"code":2926,"language":50,"meta":51,"style":51},"# Классический способ (из пакета net-tools)\nsudo lsof -i :80\n",[26,2928,2929,2934],{"__ignoreMap":51},[55,2930,2931],{"class":57,"line":58},[55,2932,2933],{"class":297},"# Классический способ (из пакета net-tools)\n",[55,2935,2936,2938,2940,2943],{"class":57,"line":353},[55,2937,356],{"class":61},[55,2939,2209],{"class":259},[55,2941,2942],{"class":64}," -i",[55,2944,2904],{"class":259},[22,2946,2947,2949],{},[26,2948,1660],{}," (list open files) показывает все открытые файлы, включая сетевые сокеты. Очень мощный инструмент.",[35,2951,2953],{"id":2952},"по-файлу-или-каталогу","По файлу или каталогу",[22,2955,2956,2957,2960],{},"Какой процесс держит открытым файл ",[26,2958,2959],{},"/var/log/app.log"," и мешает его удалить?",[46,2962,2964],{"className":48,"code":2963,"language":50,"meta":51,"style":51},"sudo lsof /var/log/app.log\n",[26,2965,2966],{"__ignoreMap":51},[55,2967,2968,2970,2972],{"class":57,"line":58},[55,2969,356],{"class":61},[55,2971,2209],{"class":259},[55,2973,2974],{"class":259}," /var/log/app.log\n",[35,2976,2978],{"id":2977},"по-дереву-процессов","По дереву процессов",[22,2980,2981],{},"Чтобы увидеть иерархию (родительские и дочерние процессы), используйте:",[46,2983,2985],{"className":48,"code":2984,"language":50,"meta":51,"style":51},"pstree -p\n",[26,2986,2987],{"__ignoreMap":51},[55,2988,2989,2992],{"class":57,"line":58},[55,2990,2991],{"class":61},"pstree",[55,2993,2994],{"class":64}," -p\n",[22,2996,2997,2998,3000,3001,170],{},"Или в ",[26,2999,161],{}," нажмите ",[26,3002,3003],{},"F5",[17,3005,3007],{"id":3006},"завершение-процессов-kill-killall-pkill","Завершение процессов: kill, killall, pkill",[35,3009,3011],{"id":3010},"сигналы-язык-общения-с-процессами","Сигналы: язык общения с процессами",[22,3013,3014,3015,3018],{},"Завершение — это не просто \"выстрел\". Это отправка ",[80,3016,3017],{},"сигнала"," — короткого сообщения процессу. Основные:",[827,3020,3021,3038],{},[830,3022,3023],{},[833,3024,3025,3029,3032,3035],{},[836,3026,3028],{"align":3027},"left","Сигнал",[836,3030,3031],{"align":3027},"Номер",[836,3033,3034],{"align":3027},"Действие (по умолчанию)",[836,3036,3037],{"align":3027},"Как использовать",[849,3039,3040,3062,3086,3108],{},[833,3041,3042,3047,3050,3056],{},[854,3043,3044],{"align":3027},[26,3045,3046],{},"SIGTERM",[854,3048,3049],{"align":3027},"15",[854,3051,3052,3055],{"align":3027},[80,3053,3054],{},"Вежливое завершение."," Процесс может обработать сигнал, сохранить состояние и корректно закрыться.",[854,3057,3058,3061],{"align":3027},[26,3059,3060],{},"kill \u003CPID>"," (этот сигнал отправляется по умолч.)",[833,3063,3064,3069,3072,3078],{},[854,3065,3066],{"align":3027},[26,3067,3068],{},"SIGKILL",[854,3070,3071],{"align":3027},"9",[854,3073,3074,3077],{"align":3027},[80,3075,3076],{},"Немедленное принудительное завершение."," Обработчик сигнала игнорируется. Процесс не может сохранить данные.",[854,3079,3080,1198,3083],{"align":3027},[26,3081,3082],{},"kill -9 \u003CPID>",[26,3084,3085],{},"kill -KILL \u003CPID>",[833,3087,3088,3093,3096,3103],{},[854,3089,3090],{"align":3027},[26,3091,3092],{},"SIGINT",[854,3094,3095],{"align":3027},"2",[854,3097,3098,3099,3102],{"align":3027},"Прерывание (как ",[26,3100,3101],{},"Ctrl+C"," в терминале).",[854,3104,3105],{"align":3027},[26,3106,3107],{},"kill -2 \u003CPID>",[833,3109,3110,3115,3118,3121],{},[854,3111,3112],{"align":3027},[26,3113,3114],{},"SIGHUP",[854,3116,3117],{"align":3027},"1",[854,3119,3120],{"align":3027},"\"Перезагрузка\". Часто используется для перечитывания конфигурационных файлов без полного перезапуска.",[854,3122,3123],{"align":3027},[26,3124,3125],{},"kill -HUP \u003CPID>",[22,3127,3128,3130,3131,3133,3134,3136,3137,170],{},[80,3129,1764],{}," Сначала пробуйте ",[26,3132,3046],{}," (просто ",[26,3135,2613],{},"). Если процесс не реагирует (виснет), используйте ",[26,3138,3068],{},[35,3140,3142],{"id":3141},"инструменты","Инструменты",[84,3144,3145,3155,3171,3191,3203],{},[87,3146,3147,3151,3152,3154],{},[80,3148,3149],{},[26,3150,3060],{}," — отправить ",[26,3153,3046],{}," конкретному PID.",[87,3156,3157,1198,3162,3167,3168,170],{},[80,3158,3159],{},[26,3160,3161],{},"kill -s SIGNAL \u003CPID>",[80,3163,3164],{},[26,3165,3166],{},"kill -SIGNAL \u003CPID>"," — отправить конкретный сигнал. Пример: ",[26,3169,3170],{},"kill -HUP 1234",[87,3172,3173,3178,3179,3182,3183,3186,3187,3190],{},[80,3174,3175],{},[26,3176,3177],{},"killall \u003Cимя_процесса>"," — завершить ",[80,3180,3181],{},"все"," процессы с указанным именем. ",[26,3184,3185],{},"killall nginx",". ",[80,3188,3189],{},"Осторожно!"," Убедитесь, что убиваете то, что нужно.",[87,3192,3193,3198,3199,3202],{},[80,3194,3195],{},[26,3196,3197],{},"pkill \u003Cпаттерн>"," — завершить процессы, соответствующие шаблону (по имени, пользователю и т.д.). ",[26,3200,3201],{},"pkill -f \"python3 script.py\""," (ищет в полной командной строке). Мощный, но требует аккуратности.",[87,3204,3205,128,3210,3213,3214,170],{},[80,3206,3207],{},[26,3208,3209],{},"pgrep \u003Cпаттерн>",[80,3211,3212],{},"только найти"," PID по шаблону. Идеально для комбинации: ",[26,3215,3216],{},"kill $(pgrep -f \"python3 script.py\")",[17,3218,3220],{"id":3219},"управление-приоритетами-nice-и-renice","Управление приоритетами: nice и renice",[22,3222,3223],{},"Linux планировщик распределяет время CPU между процессами. Приоритет можно влиять.",[84,3225,3226,3284],{},[87,3227,3228,3233,3234,3237,3238],{},[80,3229,3230],{},[26,3231,3232],{},"nice"," — запускает процесс с заданным ",[80,3235,3236],{},"статическим"," приоритетом.",[84,3239,3240,3254,3274],{},[87,3241,3242,3243,3246,3247,3249,3250,3253],{},"Диапазон: от ",[26,3244,3245],{},"-20"," (наивысший приоритет, требует ",[26,3248,356],{},") до ",[26,3251,3252],{},"+19"," (наинизший).",[87,3255,3256,3257],{},"Пример запуска с низким приоритетом (чтобы не мешал другим задачам):\n",[46,3258,3260],{"className":48,"code":3259,"language":50,"meta":51,"style":51},"nice -n 19 ./долгая_расчётная_задача.sh\n",[26,3261,3262],{"__ignoreMap":51},[55,3263,3264,3266,3268,3271],{"class":57,"line":58},[55,3265,3232],{"class":61},[55,3267,1834],{"class":64},[55,3269,3270],{"class":64}," 19",[55,3272,3273],{"class":259}," ./долгая_расчётная_задача.sh\n",[87,3275,3276,3277,3280,3281,170],{},"Если не указать ",[26,3278,3279],{},"-n",", по умолчанию используется ",[26,3282,3283],{},"+10",[87,3285,3286,3291,3292,3295,3296],{},[80,3287,3288],{},[26,3289,3290],{},"renice"," — меняет приоритет ",[80,3293,3294],{},"уже запущенного"," процесса.",[46,3297,3299],{"className":48,"code":3298,"language":50,"meta":51,"style":51},"# Повысить приоритет (уменьшить значение nice) для PID 5678\nsudo renice -5 -p 5678\n",[26,3300,3301,3306],{"__ignoreMap":51},[55,3302,3303],{"class":57,"line":58},[55,3304,3305],{"class":297},"# Повысить приоритет (уменьшить значение nice) для PID 5678\n",[55,3307,3308,3310,3313,3316,3318],{"class":57,"line":353},[55,3309,356],{"class":61},[55,3311,3312],{"class":259}," renice",[55,3314,3315],{"class":64}," -5",[55,3317,1110],{"class":64},[55,3319,3320],{"class":64}," 5678\n",[134,3322,3323],{},[22,3324,138,3325,3327,3328,3331],{},[80,3326,141],{}," Не повышайте (",[26,3329,3330],{},"nice \u003C 0",") приоритет важных системных процессов без необходимости. Это может привести к \"голоданию\" других задач.",[17,3333,3335],{"id":3334},"фоновые-процессы-и-управление-заданиями","Фоновые процессы и управление заданиями",[35,3337,3339],{"id":3338},"простое-фоновое-выполнение","Простое фоновое выполнение",[22,3341,3342,3343,3346],{},"Добавьте ",[26,3344,3345],{},"&"," в конец команды:",[46,3348,3350],{"className":48,"code":3349,"language":50,"meta":51,"style":51},"long_running_command &\n[1] 2345  # [1] - номер задания, 2345 - PID\n",[26,3351,3352,3360],{"__ignoreMap":51},[55,3353,3354,3357],{"class":57,"line":58},[55,3355,3356],{"class":61},"long_running_command",[55,3358,3359],{"class":617}," &\n",[55,3361,3362,3365,3368],{"class":57,"line":353},[55,3363,3364],{"class":617},"[1] ",[55,3366,3367],{"class":61},"2345",[55,3369,3370],{"class":297},"  # [1] - номер задания, 2345 - PID\n",[22,3372,3373],{},"Команда вернёт управление терминалу сразу.",[35,3375,3377],{"id":3376},"управление-заданиями-job-control","Управление заданиями (job control)",[84,3379,3380,3388,3396,3404],{},[87,3381,3382,3387],{},[80,3383,3384],{},[26,3385,3386],{},"jobs"," — показать список фоновых заданий текущей оболочки.",[87,3389,3390,3395],{},[80,3391,3392],{},[26,3393,3394],{},"fg %1"," — вернуть задание №1 на передний план (foreground).",[87,3397,3398,3403],{},[80,3399,3400],{},[26,3401,3402],{},"bg %1"," — возобновить остановленное задание №1 в фоне (background).",[87,3405,3406,3411],{},[80,3407,3408],{},[26,3409,3410],{},"Ctrl+Z"," — приостановить (stop) текущий foreground-процесс (не завершает!).",[35,3413,3415],{"id":3414},"независимость-от-терминала-nohup-и-disown","Независимость от терминала: nohup и disown",[22,3417,3418,3419,3421,3422,3424],{},"По умолчанию фоновый процесс (",[26,3420,3345],{},") всё равно \"привязан\" к терминалу. Если терминал закроется (например, разорвётся SSH-соединение), процесс получит сигнал ",[26,3423,3114],{}," и, скорее всего, завершится.",[84,3426,3427,3465],{},[87,3428,3429,3434,3435,3437,3438,3461,3462,170],{},[80,3430,3431],{},[26,3432,3433],{},"nohup"," (no hang up) — запускает процесс, игнорирующий сигнал ",[26,3436,3114],{},".\n",[46,3439,3441],{"className":48,"code":3440,"language":50,"meta":51,"style":51},"nohup ./my_server.py > server.log 2>&1 &\n",[26,3442,3443],{"__ignoreMap":51},[55,3444,3445,3447,3450,3453,3456,3459],{"class":57,"line":58},[55,3446,3433],{"class":61},[55,3448,3449],{"class":259}," ./my_server.py",[55,3451,3452],{"class":621}," >",[55,3454,3455],{"class":259}," server.log",[55,3457,3458],{"class":621}," 2>&1",[55,3460,3359],{"class":617},"\nВывод перенаправляется в файл ",[26,3463,3464],{},"server.log",[87,3466,3467,3472,3473,3476,3477,3480,3481,3483],{},[80,3468,3469],{},[26,3470,3471],{},"disown"," — после запуска процесса в фоне (",[26,3474,3475],{},"command &",") можно \"отсоединить\" его от текущей оболочки: ",[26,3478,3479],{},"disown %1",". После этого процесс не будет получать ",[26,3482,3114],{}," при закрытии терминала.",[17,3485,3487],{"id":3486},"современный-подход-systemd-и-systemctl","Современный подход: systemd и systemctl",[22,3489,3490,3491,170],{},"Для долгоживущих системных сервисов (веб-серверы, базы данных, демоны) в современных дистрибутивах (Ubuntu 15.04+, CentOS 7+, Debian 8+) используется ",[80,3492,2617],{},[35,3494,3496],{"id":3495},"основные-команды-systemctl","Основные команды systemctl",[46,3498,3500],{"className":48,"code":3499,"language":50,"meta":51,"style":51},"# Статус сервиса (запущен ли, PID, последние логи)\nsudo systemctl status nginx\n\n# Запуск/остановка/перезапуск\nsudo systemctl start nginx\nsudo systemctl stop nginx\nsudo systemctl restart nginx   # мягкий перезапуск (может отключить на мгновение)\nsudo systemctl reload nginx    # перечитать конфиг без остановки (если поддерживает)\n\n# Включение/отключение автозапуска при загрузке системы\nsudo systemctl enable nginx\nsudo systemctl disable nginx\n\n# Просмотр всех юнитов (сервисов, таймеров, сокетов)\nsystemctl list-units --type=service --all\n\n# Просмотр логов сервиса (аналог journalctl)\nsudo journalctl -u nginx -f  # -f — следить в реальном времени\n",[26,3501,3502,3507,3518,3522,3527,3538,3549,3564,3578,3583,3589,3600,3612,3617,3623,3638,3643,3649],{"__ignoreMap":51},[55,3503,3504],{"class":57,"line":58},[55,3505,3506],{"class":297},"# Статус сервиса (запущен ли, PID, последние логи)\n",[55,3508,3509,3511,3513,3516],{"class":57,"line":353},[55,3510,356],{"class":61},[55,3512,775],{"class":259},[55,3514,3515],{"class":259}," status",[55,3517,2756],{"class":259},[55,3519,3520],{"class":57,"line":368},[55,3521,372],{"emptyLinePlaceholder":371},[55,3523,3524],{"class":57,"line":375},[55,3525,3526],{"class":297},"# Запуск/остановка/перезапуск\n",[55,3528,3529,3531,3533,3536],{"class":57,"line":381},[55,3530,356],{"class":61},[55,3532,775],{"class":259},[55,3534,3535],{"class":259}," start",[55,3537,2756],{"class":259},[55,3539,3540,3542,3544,3547],{"class":57,"line":711},[55,3541,356],{"class":61},[55,3543,775],{"class":259},[55,3545,3546],{"class":259}," stop",[55,3548,2756],{"class":259},[55,3550,3551,3553,3555,3558,3561],{"class":57,"line":732},[55,3552,356],{"class":61},[55,3554,775],{"class":259},[55,3556,3557],{"class":259}," restart",[55,3559,3560],{"class":259}," nginx",[55,3562,3563],{"class":297},"   # мягкий перезапуск (может отключить на мгновение)\n",[55,3565,3566,3568,3570,3573,3575],{"class":57,"line":1954},[55,3567,356],{"class":61},[55,3569,775],{"class":259},[55,3571,3572],{"class":259}," reload",[55,3574,3560],{"class":259},[55,3576,3577],{"class":297},"    # перечитать конфиг без остановки (если поддерживает)\n",[55,3579,3581],{"class":57,"line":3580},9,[55,3582,372],{"emptyLinePlaceholder":371},[55,3584,3586],{"class":57,"line":3585},10,[55,3587,3588],{"class":297},"# Включение/отключение автозапуска при загрузке системы\n",[55,3590,3592,3594,3596,3598],{"class":57,"line":3591},11,[55,3593,356],{"class":61},[55,3595,775],{"class":259},[55,3597,778],{"class":259},[55,3599,2756],{"class":259},[55,3601,3603,3605,3607,3610],{"class":57,"line":3602},12,[55,3604,356],{"class":61},[55,3606,775],{"class":259},[55,3608,3609],{"class":259}," disable",[55,3611,2756],{"class":259},[55,3613,3615],{"class":57,"line":3614},13,[55,3616,372],{"emptyLinePlaceholder":371},[55,3618,3620],{"class":57,"line":3619},14,[55,3621,3622],{"class":297},"# Просмотр всех юнитов (сервисов, таймеров, сокетов)\n",[55,3624,3626,3629,3632,3635],{"class":57,"line":3625},15,[55,3627,3628],{"class":61},"systemctl",[55,3630,3631],{"class":259}," list-units",[55,3633,3634],{"class":64}," --type=service",[55,3636,3637],{"class":64}," --all\n",[55,3639,3641],{"class":57,"line":3640},16,[55,3642,372],{"emptyLinePlaceholder":371},[55,3644,3646],{"class":57,"line":3645},17,[55,3647,3648],{"class":297},"# Просмотр логов сервиса (аналог journalctl)\n",[55,3650,3652,3654,3657,3660,3662,3664],{"class":57,"line":3651},18,[55,3653,356],{"class":61},[55,3655,3656],{"class":259}," journalctl",[55,3658,3659],{"class":64}," -u",[55,3661,3560],{"class":259},[55,3663,801],{"class":64},[55,3665,3666],{"class":297},"  # -f — следить в реальном времени\n",[35,3668,3670],{"id":3669},"создание-собственного-сервиса","Создание собственного сервиса",[497,3672,3673,3679,3752],{},[87,3674,3675,3676],{},"Создайте файл конфигурации: ",[26,3677,3678],{},"sudo nano /etc/systemd/system/myapp.service",[87,3680,3681,3682],{},"Базовый шаблон:\n",[46,3683,3687],{"className":3684,"code":3685,"language":3686,"meta":51,"style":51},"language-ini shiki shiki-themes github-light github-dark","[Unit]\nDescription=Мой кастомный сервис\nAfter=network.target\n\n[Service]\nType=simple\nExecStart=/usr/bin/python3 /opt/myapp/main.py\nRestart=on-failure\nUser=appuser\nWorkingDirectory=/opt/myapp\n\n[Install]\nWantedBy=multi-user.target\n","ini",[26,3688,3689,3694,3699,3704,3708,3713,3718,3723,3728,3733,3738,3742,3747],{"__ignoreMap":51},[55,3690,3691],{"class":57,"line":58},[55,3692,3693],{},"[Unit]\n",[55,3695,3696],{"class":57,"line":353},[55,3697,3698],{},"Description=Мой кастомный сервис\n",[55,3700,3701],{"class":57,"line":368},[55,3702,3703],{},"After=network.target\n",[55,3705,3706],{"class":57,"line":375},[55,3707,372],{"emptyLinePlaceholder":371},[55,3709,3710],{"class":57,"line":381},[55,3711,3712],{},"[Service]\n",[55,3714,3715],{"class":57,"line":711},[55,3716,3717],{},"Type=simple\n",[55,3719,3720],{"class":57,"line":732},[55,3721,3722],{},"ExecStart=/usr/bin/python3 /opt/myapp/main.py\n",[55,3724,3725],{"class":57,"line":1954},[55,3726,3727],{},"Restart=on-failure\n",[55,3729,3730],{"class":57,"line":3580},[55,3731,3732],{},"User=appuser\n",[55,3734,3735],{"class":57,"line":3585},[55,3736,3737],{},"WorkingDirectory=/opt/myapp\n",[55,3739,3740],{"class":57,"line":3591},[55,3741,372],{"emptyLinePlaceholder":371},[55,3743,3744],{"class":57,"line":3602},[55,3745,3746],{},"[Install]\n",[55,3748,3749],{"class":57,"line":3614},[55,3750,3751],{},"WantedBy=multi-user.target\n",[87,3753,3754,3755,170],{},"Активируйте: ",[26,3756,3757],{},"sudo systemctl daemon-reload && sudo systemctl enable --now myapp.service",[820,3759],{},[17,3761,3763],{"id":3762},"продвинутый-мониторинг-и-анализ","Продвинутый мониторинг и анализ",[35,3765,3767,3770],{"id":3766},"strace-трассировка-системных-вызовов",[26,3768,3769],{},"strace"," — трассировка системных вызовов",[22,3772,3773,3774,3777,3778,3780],{},"Если нужно понять, ",[80,3775,3776],{},"что именно"," делает \"зависший\" процесс, используйте ",[26,3779,3769],{},". Он показывает все взаимодействия процесса с ядром (чтение/запись файлов, сетевые запросы и т.д.).",[46,3782,3784],{"className":48,"code":3783,"language":50,"meta":51,"style":51},"# Трассировать уже запущенный процесс\nsudo strace -p \u003CPID> -o trace.log\n\n# Запустить команду под strace\nsudo strace -o trace.log ./my_program\n",[26,3785,3786,3791,3817,3821,3826],{"__ignoreMap":51},[55,3787,3788],{"class":57,"line":58},[55,3789,3790],{"class":297},"# Трассировать уже запущенный процесс\n",[55,3792,3793,3795,3798,3800,3803,3806,3809,3812,3814],{"class":57,"line":353},[55,3794,356],{"class":61},[55,3796,3797],{"class":259}," strace",[55,3799,1110],{"class":64},[55,3801,3802],{"class":621}," \u003C",[55,3804,3805],{"class":259},"PI",[55,3807,3808],{"class":617},"D",[55,3810,3811],{"class":621},">",[55,3813,1116],{"class":64},[55,3815,3816],{"class":259}," trace.log\n",[55,3818,3819],{"class":57,"line":368},[55,3820,372],{"emptyLinePlaceholder":371},[55,3822,3823],{"class":57,"line":375},[55,3824,3825],{"class":297},"# Запустить команду под strace\n",[55,3827,3828,3830,3832,3834,3837],{"class":57,"line":381},[55,3829,356],{"class":61},[55,3831,3797],{"class":259},[55,3833,1116],{"class":64},[55,3835,3836],{"class":259}," trace.log",[55,3838,3839],{"class":259}," ./my_program\n",[22,3841,1325,3842,3845,3846,3849],{},[26,3843,3844],{},"-c"," для статистики по системным вызовам, ",[26,3847,3848],{},"-f"," для следования за дочерними процессами.",[35,3851,3853,3855],{"id":3852},"lsof-что-открыто",[26,3854,1660],{}," — \"что открыто?\"",[22,3857,3858],{},"Уже упоминалась, но стоит выделить отдельно. Это швейцарский нож для анализа.",[46,3860,3862],{"className":48,"code":3861,"language":50,"meta":51,"style":51},"# Все открытые файлы для конкретного PID\nsudo lsof -p \u003CPID>\n\n# Все сетевые соединения (аналог netstat)\nsudo lsof -i\n\n# Кто держит каталог /mnt/backup (например, для unmount)\nsudo lsof +D /mnt/backup\n",[26,3863,3864,3869,3886,3890,3895,3904,3908,3913],{"__ignoreMap":51},[55,3865,3866],{"class":57,"line":58},[55,3867,3868],{"class":297},"# Все открытые файлы для конкретного PID\n",[55,3870,3871,3873,3875,3877,3879,3881,3883],{"class":57,"line":353},[55,3872,356],{"class":61},[55,3874,2209],{"class":259},[55,3876,1110],{"class":64},[55,3878,3802],{"class":621},[55,3880,3805],{"class":259},[55,3882,3808],{"class":617},[55,3884,3885],{"class":621},">\n",[55,3887,3888],{"class":57,"line":368},[55,3889,372],{"emptyLinePlaceholder":371},[55,3891,3892],{"class":57,"line":375},[55,3893,3894],{"class":297},"# Все сетевые соединения (аналог netstat)\n",[55,3896,3897,3899,3901],{"class":57,"line":381},[55,3898,356],{"class":61},[55,3900,2209],{"class":259},[55,3902,3903],{"class":64}," -i\n",[55,3905,3906],{"class":57,"line":711},[55,3907,372],{"emptyLinePlaceholder":371},[55,3909,3910],{"class":57,"line":732},[55,3911,3912],{"class":297},"# Кто держит каталог /mnt/backup (например, для unmount)\n",[55,3914,3915,3917,3919,3922],{"class":57,"line":1954},[55,3916,356],{"class":61},[55,3918,2209],{"class":259},[55,3920,3921],{"class":259}," +D",[55,3923,3924],{"class":259}," /mnt/backup\n",[35,3926,3928,1182,3930,3933],{"id":3927},"vmstat-и-iostat-общая-нагрузка-на-систему",[26,3929,223],{},[26,3931,3932],{},"iostat"," — общая нагрузка на систему",[22,3935,3936],{},"Чтобы понять, проблема в процессе или в системе в целом:",[46,3938,3940],{"className":48,"code":3939,"language":50,"meta":51,"style":51},"# Процессы, память, своп, I/O, CPU (обновляется каждые 2 сек)\nvmstat 2\n\n# Статистика по дисковому вводу-выводу\niostat -xz 2\n",[26,3941,3942,3947,3954,3958,3963],{"__ignoreMap":51},[55,3943,3944],{"class":57,"line":58},[55,3945,3946],{"class":297},"# Процессы, память, своп, I/O, CPU (обновляется каждые 2 сек)\n",[55,3948,3949,3951],{"class":57,"line":353},[55,3950,223],{"class":61},[55,3952,3953],{"class":64}," 2\n",[55,3955,3956],{"class":57,"line":368},[55,3957,372],{"emptyLinePlaceholder":371},[55,3959,3960],{"class":57,"line":375},[55,3961,3962],{"class":297},"# Статистика по дисковому вводу-выводу\n",[55,3964,3965,3967,3970],{"class":57,"line":381},[55,3966,3932],{"class":61},[55,3968,3969],{"class":64}," -xz",[55,3971,3953],{"class":64},[22,3973,3974,3975,3977,3978,3981,3982,523,3985,3988],{},"Если ",[26,3976,223],{}," показывает высокий ",[26,3979,3980],{},"wa"," (I/O wait) — проблема в дисках. Если высокий ",[26,3983,3984],{},"us",[26,3986,3987],{},"sy"," (user/system CPU) — проблема в процессах.",[17,3990,3992],{"id":3991},"заключение-и-лучшие-практики","Заключение и лучшие практики",[497,3994,3995,4008,4023,4034,4045,4054,4063],{},[87,3996,3997,4007],{},[80,3998,3999,4000,1198,4003,523,4005],{},"Начинайте с ",[26,4001,4002],{},"ps aux",[26,4004,157],{},[26,4006,161],{}," для общего обзора.",[87,4009,4010,4019,4020,170],{},[80,4011,1325,4012,523,4014,523,4016],{},[26,4013,1035],{},[26,4015,2784],{},[26,4017,4018],{},"pkill"," для поиска, но проверяйте вывод перед ",[26,4021,4022],{},"killall",[87,4024,4025,1156,4031,4033],{},[80,4026,4027,4028,4030],{},"Отправляйте ",[26,4029,3046],{}," (kill) в первую очередь",[26,4032,3068],{}," (-9) — только в крайнем случае.",[87,4035,4036,4041,4042,4044],{},[80,4037,4038,4039],{},"Для сервисов используйте ",[26,4040,3628],{},", а не ручной запуск через ",[26,4043,3345],{},". Это даст автоматический перезапуск, логирование и управление.",[87,4046,4047,4053],{},[80,4048,4049,1182,4051],{},[26,4050,3433],{},[26,4052,3471],{}," — ваши друзья для долгих задач в нестабильном SSH-сессии.",[87,4055,4056,4062],{},[80,4057,4058,1182,4060],{},[26,4059,3769],{},[26,4061,1660],{}," — мощные отладочные инструменты для глубокого анализа.",[87,4064,4065,4068,4069,1198,4071,4073,4074,170],{},[80,4066,4067],{},"Права:"," Для управления чужими процессами (особенно через ",[26,4070,2613],{},[26,4072,3290],{},") часто нужны права ",[26,4075,356],{},[22,4077,4078,4079,4082],{},"Управление процессами — это навык, который оттачивается практикой. Экспериментируйте в тестовой среде, создавайте \"игрушечные\" зависшие процессы (",[26,4080,4081],{},"sleep 1000 &",") и отрабатывайте на них команды.",[1205,4084,4085],{},"html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}",{"title":51,"searchDepth":353,"depth":353,"links":4087},[4088,4089,4095,4100,4104,4105,4110,4114,4122],{"id":2587,"depth":353,"text":2588},{"id":2621,"depth":353,"text":2622,"children":4090},[4091,4093],{"id":2625,"depth":368,"text":4092},"Команда ps — снимок процессов",{"id":2791,"depth":368,"text":4094},"top и htop — интерактивный мониторинг",{"id":2866,"depth":353,"text":2867,"children":4096},[4097,4098,4099],{"id":2873,"depth":368,"text":2874},{"id":2952,"depth":368,"text":2953},{"id":2977,"depth":368,"text":2978},{"id":3006,"depth":353,"text":3007,"children":4101},[4102,4103],{"id":3010,"depth":368,"text":3011},{"id":3141,"depth":368,"text":3142},{"id":3219,"depth":353,"text":3220},{"id":3334,"depth":353,"text":3335,"children":4106},[4107,4108,4109],{"id":3338,"depth":368,"text":3339},{"id":3376,"depth":368,"text":3377},{"id":3414,"depth":368,"text":3415},{"id":3486,"depth":353,"text":3487,"children":4111},[4112,4113],{"id":3495,"depth":368,"text":3496},{"id":3669,"depth":368,"text":3670},{"id":3762,"depth":353,"text":3763,"children":4115},[4116,4118,4120],{"id":3766,"depth":368,"text":4117},"strace — трассировка системных вызовов",{"id":3852,"depth":368,"text":4119},"lsof — \"что открыто?\"",{"id":3927,"depth":368,"text":4121},"vmstat и iostat — общая нагрузка на систему",{"id":3991,"depth":353,"text":3992},"2026-02-14 12:11:36","Полное руководство по мониторингу и управлению процессами в Linux. Изучите ps, top, kill, nice, systemctl и другие инструменты для эффективной администрирования системы.",[4126,4129,4132,4135],{"question":4127,"answer":4128},"В чём разница между командами kill и killall?","`kill` завершает процесс по его PID (идентификатору), который нужно предварительно узнать. `killall` завершает все процессы с указанным именем, что удобно, но может быть опаснее, если у программы несколько экземпляров.",{"question":4130,"answer":4131},"Как найти PID процесса, который слушает определённый порт (например, 8080)?","Используйте команду `sudo ss -tulpn | grep :8080` или `sudo lsof -i :8080`. В выводе вы увидите PID и имя программы.",{"question":4133,"answer":4134},"Почему команда top не показывает все мои процессы?","По умолчанию `top` показывает процессы текущего пользователя. Нажмите `u` в top и введите имя пользователя (или оставьте пустым для всех), чтобы seeing процессы всех пользователей. Также убедитесь, что вы запустили top с правами sudo для полной картины.",{"question":4136,"answer":4137},"Что такое zombie-процесс и как от него избавиться?","Zombie (зомби) — это завершившийся процесс, запись о котором ещё не удалена из таблицы процессов, так как родительский процесс не прочитал её статус. Обычно они исчезают сами после завершения родителя. Если зомби накапливаются, нужно перезапустить или исправить родительский процесс.",[4139,4142,4145,4148,4151,4154],{"name":4140,"text":4141},"Просмотр списка активных процессов","Используйте команду `ps` для снимка процессов или `top`/`htop` для интерактивного мониторинга в реальном времени. Ключевые опции: `ps aux` (все процессы) и `ps -ef` (полный формат).",{"name":4143,"text":4144},"Поиск конкретного процесса","Комбинируйте `ps` или `top` с `grep` для поиска по имени: `ps aux | grep nginx`. Для поиска по порту используйте `ss` или `lsof`.",{"name":4146,"text":4147},"Завершение (убийство) процесса","Найдите PID процесса и выполните `kill \u003CPID>`. Для принудительного завершения используйте сигнал `KILL` (9): `kill -9 \u003CPID>`. Для завершения по имени — `killall \u003Cимя_процесса>`.",{"name":4149,"text":4150},"Изменение приоритета процесса","Запустите процесс с низким приоритетом через `nice -n 19 команда`. Для уже запущенного процесса используйте `renice \u003Cновый_приоритет> -p \u003CPID>` (требует sudo для повышения приоритета).",{"name":4152,"text":4153},"Запуск процесса в фоне и управление им","Добавьте `&` в конец команды для запуска в фоне: `команда &`. Используйте `jobs` для просмотра фоновых задач, `fg %1` для возврата на передний план, `bg %1` для возобновления в фоне. `nohup` и `disown` позволяют сделать процесс независимым от терминала.",{"name":4155,"text":4156},"Управление сервисами через systemd","Для долгоживущих сервисов используйте systemd: `sudo systemctl start \u003Cservice>`, `sudo systemctl status \u003Cservice>`, `sudo systemctl enable \u003Cservice>` (автозапуск). Это предпочтительный способ для production-сервисов.",[4158,4159,4160,4161,4162,4163,4164,4165],"управление процессами linux","команда ps linux примеры","как убить процесс в linux","systemd управление сервисами","мониторинг процессов linux top","сигналы linux kill term","приоритет процесса nice renice","фоновые процессы linux & nohup",{},[4168,4169,4170],"/guides/linux/systemd-service-creation","/guides/linux/log-analysis-basics","/errors/linux/process-zombie",{"title":2578,"description":4124},"guides/linux/process-management-basics","Этот гайд научит вас находить, анализировать и управлять процессами в Linux с помощью командной строки. Вы освоите как базовые утилиты (ps, top, kill), так и современный менеджер systemd, что позволит вам контролировать работу системы и решать связанные проблемы.",[1298,4175,2617,4176,4177,50,1308],"process management","cli","администрирование","GkIEx60u1G9Bya8wIG_B7gM7Bghf81SASMUfFUPpAZo",{"id":4180,"title":4181,"appliesTo":4182,"author":12,"body":4184,"canonical":1246,"code":1246,"createdAt":5248,"description":5249,"difficulty":1249,"draft":1250,"estimatedTime":2521,"extension":1252,"faq":5250,"howToSteps":5263,"howToTotalTime":5282,"image":1246,"keywords":5283,"locale":1295,"meta":5293,"navigation":371,"path":1302,"platform":1298,"related":5294,"section":5297,"seo":5298,"severity":5299,"stem":5300,"summary":5301,"tags":5302,"twitterCreator":1246,"twitterSite":1246,"type":1313,"updatedAt":5248,"__hash__":5308},"content_ru/errors/linux/oom-killer.md","OOM Killer в Linux: как обнаружить и предотвратить",[7,8,1608,4183],"ядро Linux 4.15+",{"type":14,"value":4185,"toc":5232},[4186,4190,4196,4199,4213,4220,4224,4231,4242,4248,4252,4255,4484,4486,4490,4498,4513,4519,4553,4559,4578,4584,4594,4598,4604,4610,4677,4682,4757,4761,4764,4774,4791,4802,4808,4817,4820,4826,4835,4839,4842,4872,4875,4934,4938,5019,5023,5026,5031,5077,5082,5142,5152,5156,5198,5202,5205,5220,5223,5229],[17,4187,4189],{"id":4188},"что-такое-oom-killer-и-почему-он-появляется","Что такое OOM Killer и почему он появляется",[22,4191,4192,4195],{},[80,4193,4194],{},"OOM Killer (Out-of-Memory Killer)"," — это механизм ядра Linux, который автоматически завершает процессы, когда система исчерпала доступную оперативную память (RAM) и swap-пространство. Его цель — освободить память, чтобы ядро и критические системные процессы могли продолжить работу, предотвращая полный крах системы.",[22,4197,4198],{},"Обычно OOM Killer активируется, когда:",[84,4200,4201,4204,4207,4210],{},[87,4202,4203],{},"Физическая RAM и swap заполнены на 100%.",[87,4205,4206],{},"Приложение имеет утечку памяти (memory leak).",[87,4208,4209],{},"На сервере запущено слишком много memory-intensive процессов.",[87,4211,4212],{},"Неправильно настроены лимиты памяти в контейнерах (Docker/Kubernetes).",[22,4214,4215,4216,4219],{},"Если вы видите в логах сообщение ",[26,4217,4218],{},"Killed process"," или приложение внезапно завершается с кодом 137 (SIGKILL), скорее всего, виноват OOM Killer.",[17,4221,4223],{"id":4222},"как-работает-oom-killer","Как работает OOM Killer",[22,4225,4226,4227,4230],{},"Ядро Linux вычисляет ",[80,4228,4229],{},"oom_score"," для каждого процесса на основе:",[84,4232,4233,4236,4239],{},[87,4234,4235],{},"Доли памяти, потребляемой процессом (основной фактор).",[87,4237,4238],{},"Привилегий процесса (процессы root имеют меньший шанс быть убитыми).",[87,4240,4241],{},"Времени жизни процесса (долгоживущие процессы могут иметь более высокий score).",[22,4243,4244,4245,4247],{},"Процесс с самым высоким ",[26,4246,4229],{}," выбирается для завершения. Однако это не всегда оптимально: OOM Killer может убить важный сервис, а оставить фоновый процесс с утечкой.",[17,4249,4251],{"id":4250},"диагностика-проблемы","Диагностика проблемы",[22,4253,4254],{},"Перед любыми действиями нужно подтвердить, что проблема именно в OOM Killer.",[497,4256,4257,4296,4330,4370],{},[87,4258,4259,185,4262,4280,68,4283,4289,4291,4292,4295],{},[80,4260,4261],{},"Проверьте логи ядра",[46,4263,4265],{"className":48,"code":4264,"language":50,"meta":51,"style":51},"dmesg | grep -i kill\n",[26,4266,4267],{"__ignoreMap":51},[55,4268,4269,4271,4273,4275,4277],{"class":57,"line":58},[55,4270,583],{"class":61},[55,4272,643],{"class":621},[55,4274,1014],{"class":61},[55,4276,2942],{"class":64},[55,4278,4279],{"class":259}," kill\n",[4281,4282],"br",{},[46,4284,4287],{"className":4285,"code":4286,"language":74},[72],"[12345.678] Out of memory: Kill process 1234 (nginx) score 500 or sacrifice child\n[12345.680] Killed process 1234 (nginx) total-vm:1234567kB, anon-rss:456789kB, file-rss:0kB\n",[26,4288,4286],{"__ignoreMap":51},[4281,4290],{},"Здесь видно, что процесс ",[26,4293,4294],{},"nginx"," с PID 1234 был убит.",[87,4297,4298,185,4301,4311,4313,4314,1156,4316,1156,4318,1182,4320,4323,4324,4326,4327,4329],{},[80,4299,4300],{},"Оцените общую память",[46,4302,4303],{"className":48,"code":49,"language":50,"meta":51,"style":51},[26,4304,4305],{"__ignoreMap":51},[55,4306,4307,4309],{"class":57,"line":58},[55,4308,40],{"class":61},[55,4310,65],{"class":64},[4281,4312],{},"Обратите внимание на столбцы ",[26,4315,93],{},[26,4317,101],{},[26,4319,127],{},[26,4321,4322],{},"Swap",". Если ",[26,4325,127],{}," близок к нулю, а ",[26,4328,4322],{}," также заполнен — система в критическом состоянии.",[87,4331,4332,185,4335,4358,4360,4361,4363,4364,4366,4367,588],{},[80,4333,4334],{},"Найдите процесс-потребителя",[46,4336,4338],{"className":48,"code":4337,"language":50,"meta":51,"style":51},"top -b -n 1 | head -20\n",[26,4339,4340],{"__ignoreMap":51},[55,4341,4342,4344,4347,4349,4351,4353,4355],{"class":57,"line":58},[55,4343,157],{"class":61},[55,4345,4346],{"class":64}," -b",[55,4348,1834],{"class":64},[55,4350,291],{"class":64},[55,4352,643],{"class":621},[55,4354,1831],{"class":61},[55,4356,4357],{"class":64}," -20\n",[4281,4359],{},"Или используйте ",[26,4362,161],{}," с сортировкой по памяти (клавиша ",[26,4365,195],{}," → ",[26,4368,4369],{},"MEM%",[87,4371,4372,185,4375,4479,4481,4482,170],{},[80,4373,4374],{},"Проверьте oom_score процессов",[46,4376,4378],{"className":48,"code":4377,"language":50,"meta":51,"style":51},"for pid in $(ps -e | awk '{print $1}' | tail -n +2); do\n  echo \"PID $pid: $(cat /proc/$pid/oom_score 2>/dev/null) (adj: $(cat /proc/$pid/oom_score_adj 2>/dev/null))\"\ndone | sort -k3 -n -r | head -10\n",[26,4379,4380,4415,4456],{"__ignoreMap":51},[55,4381,4382,4384,4386,4388,4390,4392,4395,4397,4399,4402,4404,4406,4408,4411,4413],{"class":57,"line":58},[55,4383,994],{"class":621},[55,4385,997],{"class":617},[55,4387,1000],{"class":621},[55,4389,1003],{"class":617},[55,4391,1107],{"class":61},[55,4393,4394],{"class":64}," -e",[55,4396,643],{"class":621},[55,4398,646],{"class":61},[55,4400,4401],{"class":259}," '{print $1}'",[55,4403,643],{"class":621},[55,4405,977],{"class":61},[55,4407,1834],{"class":64},[55,4409,4410],{"class":259}," +2",[55,4412,1020],{"class":617},[55,4414,1023],{"class":621},[55,4416,4417,4420,4422,4424,4427,4429,4431,4433,4436,4439,4442,4444,4446,4448,4451,4453],{"class":57,"line":353},[55,4418,4419],{"class":64},"  echo",[55,4421,1094],{"class":259},[55,4423,1044],{"class":617},[55,4425,4426],{"class":259},": $(",[55,4428,256],{"class":61},[55,4430,1041],{"class":259},[55,4432,1044],{"class":617},[55,4434,4435],{"class":259},"/oom_score ",[55,4437,4438],{"class":621},"2>",[55,4440,4441],{"class":259},"/dev/null) (adj: $(",[55,4443,256],{"class":61},[55,4445,1041],{"class":259},[55,4447,1044],{"class":617},[55,4449,4450],{"class":259},"/oom_score_adj ",[55,4452,4438],{"class":621},[55,4454,4455],{"class":259},"/dev/null))\"\n",[55,4457,4458,4461,4463,4465,4468,4470,4472,4474,4476],{"class":57,"line":368},[55,4459,4460],{"class":621},"done",[55,4462,643],{"class":621},[55,4464,1823],{"class":61},[55,4466,4467],{"class":64}," -k3",[55,4469,1834],{"class":64},[55,4471,288],{"class":64},[55,4473,643],{"class":621},[55,4475,1831],{"class":61},[55,4477,4478],{"class":64}," -10\n",[4281,4480],{},"Это покажет топ-10 процессов с наивысшим ",[26,4483,4229],{},[820,4485],{},[17,4487,4489],{"id":4488},"методы-решения-проблемы","Методы решения проблемы",[35,4491,4493,4494,4497],{"id":4492},"шаг-1-настройка-oom_score_adj-для-защиты-ключевых-процессов","Шаг 1: Настройка ",[26,4495,4496],{},"oom_score_adj"," для защиты ключевых процессов",[22,4499,4500,4501,4504,4505,4508,4509,4512],{},"Каждому процессу можно задать ",[80,4502,4503],{},"adj","-значение от ",[26,4506,4507],{},"-1000"," (максимальная защита) до ",[26,4510,4511],{},"+1000"," (максимальный приоритет на убийство). Это самый быстрый способ защитить процесс.",[22,4514,4515,4518],{},[80,4516,4517],{},"Для одноразовой настройки"," (до перезагрузки):",[46,4520,4522],{"className":48,"code":4521,"language":50,"meta":51,"style":51},"# Замените \u003CPID> на идентификатор процесса\necho -1000 > /proc/\u003CPID>/oom_score_adj\n",[26,4523,4524,4529],{"__ignoreMap":51},[55,4525,4526],{"class":57,"line":58},[55,4527,4528],{"class":297},"# Замените \u003CPID> на идентификатор процесса\n",[55,4530,4531,4534,4537,4539,4541,4544,4546,4548,4550],{"class":57,"line":353},[55,4532,4533],{"class":64},"echo",[55,4535,4536],{"class":64}," -1000",[55,4538,3452],{"class":621},[55,4540,1041],{"class":259},[55,4542,4543],{"class":621},"\u003C",[55,4545,3805],{"class":259},[55,4547,3808],{"class":617},[55,4549,3811],{"class":621},[55,4551,4552],{"class":259},"/oom_score_adj\n",[22,4554,4555,4558],{},[80,4556,4557],{},"Для постоянной настройки через systemd"," (рекомендуется):\nСоздайте или отредактируйте юнит:",[46,4560,4562],{"className":3684,"code":4561,"language":3686,"meta":51,"style":51},"# /etc/systemd/system/ваш-сервис.service.d/oom-protect.conf\n[Service]\nOOMScoreAdjust=-1000\n",[26,4563,4564,4569,4573],{"__ignoreMap":51},[55,4565,4566],{"class":57,"line":58},[55,4567,4568],{},"# /etc/systemd/system/ваш-сервис.service.d/oom-protect.conf\n",[55,4570,4571],{"class":57,"line":353},[55,4572,3712],{},[55,4574,4575],{"class":57,"line":368},[55,4576,4577],{},"OOMScoreAdjust=-1000\n",[22,4579,4580,4581,170],{},"Затем перезапустите сервис: ",[26,4582,4583],{},"systemctl daemon-reload && systemctl restart ваш-сервис",[22,4585,4586,4589,4590,4593],{},[80,4587,4588],{},"Важно",": Не устанавливайте ",[26,4591,4592],{},"oom_score_adj=-1000"," для всех процессов — это может привести к тому, что OOM Killer не сможет освободить память и система зависнет.",[35,4595,4597],{"id":4596},"шаг-2-использование-cgroups-для-ограничения-памяти","Шаг 2: Использование cgroups для ограничения памяти",[22,4599,4600,4603],{},[80,4601,4602],{},"cgroups (control groups)"," позволяют задать жёсткие лимиты памяти для группы процессов. Это лучший способ для контейнеров и изолированных сервисов.",[22,4605,4606,4609],{},[80,4607,4608],{},"Через systemd"," (современные дистрибутивы):",[46,4611,4613],{"className":48,"code":4612,"language":50,"meta":51,"style":51},"# Запустить команду с лимитом 500 МБ\nsystemd-run --scope -p MemoryMax=500M /путь/к/команде\n\n# Или для существующего сервиса создайте дроп-ин:\n# /etc/systemd/system/ваш-сервис.service.d/limits.conf\n[Service]\nMemoryMax=1G\nMemorySwapMax=2G  # если нужен swap\n",[26,4614,4615,4620,4636,4640,4645,4650,4654,4664],{"__ignoreMap":51},[55,4616,4617],{"class":57,"line":58},[55,4618,4619],{"class":297},"# Запустить команду с лимитом 500 МБ\n",[55,4621,4622,4625,4628,4630,4633],{"class":57,"line":353},[55,4623,4624],{"class":61},"systemd-run",[55,4626,4627],{"class":64}," --scope",[55,4629,1110],{"class":64},[55,4631,4632],{"class":259}," MemoryMax=500M",[55,4634,4635],{"class":259}," /путь/к/команде\n",[55,4637,4638],{"class":57,"line":368},[55,4639,372],{"emptyLinePlaceholder":371},[55,4641,4642],{"class":57,"line":375},[55,4643,4644],{"class":297},"# Или для существующего сервиса создайте дроп-ин:\n",[55,4646,4647],{"class":57,"line":381},[55,4648,4649],{"class":297},"# /etc/systemd/system/ваш-сервис.service.d/limits.conf\n",[55,4651,4652],{"class":57,"line":711},[55,4653,3712],{"class":617},[55,4655,4656,4659,4661],{"class":57,"line":732},[55,4657,4658],{"class":617},"MemoryMax",[55,4660,622],{"class":621},[55,4662,4663],{"class":259},"1G\n",[55,4665,4666,4669,4671,4674],{"class":57,"line":1954},[55,4667,4668],{"class":617},"MemorySwapMax",[55,4670,622],{"class":621},[55,4672,4673],{"class":259},"2G",[55,4675,4676],{"class":297},"  # если нужен swap\n",[22,4678,4679,185],{},[80,4680,4681],{},"Вручную через cgroup v2",[46,4683,4685],{"className":48,"code":4684,"language":50,"meta":51,"style":51},"# Создайте cgroup\nsudo mkdir /sys/fs/cgroup/mylimit\n# Установите лимит 1 ГБ\necho $((1*1024*1024*1024)) | sudo tee /sys/fs/cgroup/mylimit/memory.max\n# Запустите процесс в этой группе\nsudo echo $$ > /sys/fs/cgroup/mylimit/cgroup.procs && /путь/к/вашему/приложению\n",[26,4686,4687,4692,4702,4707,4732,4737],{"__ignoreMap":51},[55,4688,4689],{"class":57,"line":58},[55,4690,4691],{"class":297},"# Создайте cgroup\n",[55,4693,4694,4696,4699],{"class":57,"line":353},[55,4695,356],{"class":61},[55,4697,4698],{"class":259}," mkdir",[55,4700,4701],{"class":259}," /sys/fs/cgroup/mylimit\n",[55,4703,4704],{"class":57,"line":368},[55,4705,4706],{"class":297},"# Установите лимит 1 ГБ\n",[55,4708,4709,4711,4714,4717,4720,4723,4726,4729],{"class":57,"line":375},[55,4710,4533],{"class":64},[55,4712,4713],{"class":617}," $((",[55,4715,4716],{"class":61},"1*1024*1024*1024",[55,4718,4719],{"class":617},")) ",[55,4721,4722],{"class":621},"|",[55,4724,4725],{"class":61}," sudo",[55,4727,4728],{"class":259}," tee",[55,4730,4731],{"class":259}," /sys/fs/cgroup/mylimit/memory.max\n",[55,4733,4734],{"class":57,"line":381},[55,4735,4736],{"class":297},"# Запустите процесс в этой группе\n",[55,4738,4739,4741,4744,4747,4749,4752,4754],{"class":57,"line":711},[55,4740,356],{"class":61},[55,4742,4743],{"class":259}," echo",[55,4745,4746],{"class":64}," $$",[55,4748,3452],{"class":621},[55,4750,4751],{"class":259}," /sys/fs/cgroup/mylimit/cgroup.procs",[55,4753,1913],{"class":617},[55,4755,4756],{"class":61},"/путь/к/вашему/приложению\n",[35,4758,4760],{"id":4759},"шаг-3-настройка-параметров-ядра","Шаг 3: Настройка параметров ядра",[22,4762,4763],{},"Изменение поведения OOM Killer на уровне ядра.",[22,4765,4766,4769,4770,4773],{},[80,4767,4768],{},"Вариант A: Запретить переcommit памяти"," (строгий контроль):\nВ ",[26,4771,4772],{},"/etc/sysctl.conf"," добавьте:",[46,4775,4779],{"className":4776,"code":4777,"language":4778,"meta":51,"style":51},"language-conf shiki shiki-themes github-light github-dark","vm.overcommit_memory = 2\nvm.overcommit_ratio = 100  # разрешить commit только до 100% RAM+swap\n","conf",[26,4780,4781,4786],{"__ignoreMap":51},[55,4782,4783],{"class":57,"line":58},[55,4784,4785],{},"vm.overcommit_memory = 2\n",[55,4787,4788],{"class":57,"line":353},[55,4789,4790],{},"vm.overcommit_ratio = 100  # разрешить commit только до 100% RAM+swap\n",[22,4792,4793,4794,4797,4798,4801],{},"Примените: ",[26,4795,4796],{},"sudo sysctl -p",". Это предотвратит выделение памяти, которой физически нет, но может вызвать ошибки ",[26,4799,4800],{},"fork: Cannot allocate memory"," у приложений.",[22,4803,4804,4807],{},[80,4805,4806],{},"Вариант B: Режим паники вместо убийства"," (для отладки):",[46,4809,4811],{"className":4776,"code":4810,"language":4778,"meta":51,"style":51},"vm.panic_on_oom = 2\n",[26,4812,4813],{"__ignoreMap":51},[55,4814,4815],{"class":57,"line":58},[55,4816,4810],{},[22,4818,4819],{},"При нехватке памяти система упадёт в kernel panic, что полезно для сбора дампов, но неприемлемо для продакшена.",[22,4821,4822,4825],{},[80,4823,4824],{},"Вариант C: Изменить степень агрессивности OOM Killer"," (редко используется):",[46,4827,4829],{"className":4776,"code":4828,"language":4778,"meta":51,"style":51},"vm.oom_kill_allocating_task = 1  # убивать процесс, который выделил память, а не случайный\n",[26,4830,4831],{"__ignoreMap":51},[55,4832,4833],{"class":57,"line":58},[55,4834,4828],{},[35,4836,4838],{"id":4837},"шаг-4-оптимизация-приложения-или-увеличение-ресурсов","Шаг 4: Оптимизация приложения или увеличение ресурсов",[22,4840,4841],{},"Если проблема вызвана утечкой памяти:",[84,4843,4844,4856,4866],{},[87,4845,4846,4847,1156,4850,1156,4853,170],{},"Используйте профилировщики: ",[26,4848,4849],{},"valgrind --leak-check=full",[26,4851,4852],{},"heaptrack",[26,4854,4855],{},"perf",[87,4857,4858,4859,1182,4862,4865],{},"Для Java-приложений: настройте ",[26,4860,4861],{},"-Xmx",[26,4863,4864],{},"-Xms"," в JVM.",[87,4867,4868,4869,588],{},"Для Python: проверьте на утечки (например, через ",[26,4870,4871],{},"tracemalloc",[22,4873,4874],{},"Если нагрузка обоснована:",[84,4876,4877,4880],{},[87,4878,4879],{},"Увеличьте объём RAM на сервере.",[87,4881,4882,4883],{},"Добавьте swap-файл (временное решение, но не панацея):\n",[46,4884,4886],{"className":48,"code":4885,"language":50,"meta":51,"style":51},"sudo fallocate -l 4G /swapfile\nsudo chmod 600 /swapfile\nsudo mkswap /swapfile\nsudo swapon /swapfile\n",[26,4887,4888,4904,4916,4925],{"__ignoreMap":51},[55,4889,4890,4892,4895,4898,4901],{"class":57,"line":58},[55,4891,356],{"class":61},[55,4893,4894],{"class":259}," fallocate",[55,4896,4897],{"class":64}," -l",[55,4899,4900],{"class":259}," 4G",[55,4902,4903],{"class":259}," /swapfile\n",[55,4905,4906,4908,4911,4914],{"class":57,"line":353},[55,4907,356],{"class":61},[55,4909,4910],{"class":259}," chmod",[55,4912,4913],{"class":64}," 600",[55,4915,4903],{"class":259},[55,4917,4918,4920,4923],{"class":57,"line":368},[55,4919,356],{"class":61},[55,4921,4922],{"class":259}," mkswap",[55,4924,4903],{"class":259},[55,4926,4927,4929,4932],{"class":57,"line":375},[55,4928,356],{"class":61},[55,4930,4931],{"class":259}," swapon",[55,4933,4903],{"class":259},[17,4935,4937],{"id":4936},"профилактика-oom-killer","Профилактика OOM Killer",[497,4939,4940,4964,5004],{},[87,4941,4942,185,4945],{},[80,4943,4944],{},"Мониторинг памяти",[84,4946,4947,4955,4958],{},[87,4948,1325,4949,1198,4952,170],{},[26,4950,4951],{},"Prometheus + node_exporter",[26,4953,4954],{},"Zabbix",[87,4956,4957],{},"Настройте алерты при использовании RAM > 80%.",[87,4959,4960,4961,170],{},"Пример команды для быстрой проверки: ",[26,4962,4963],{},"awk '/MemAvailable/ {print $2/1024\" GB available\"}' /proc/meminfo",[87,4965,4966,185,4969],{},[80,4967,4968],{},"Логирование использования памяти",[46,4970,4972],{"className":48,"code":4971,"language":50,"meta":51,"style":51},"# Запись каждые 5 минут в cron\n*/5 * * * * /usr/bin/free -h >> /var/log/memory.log\n",[26,4973,4974,4979],{"__ignoreMap":51},[55,4975,4976],{"class":57,"line":58},[55,4977,4978],{"class":297},"# Запись каждые 5 минут в cron\n",[55,4980,4981,4984,4987,4989,4991,4993,4995,4998,5001],{"class":57,"line":353},[55,4982,4983],{"class":621},"*",[55,4985,4986],{"class":617},"/5 ",[55,4988,4983],{"class":621},[55,4990,1814],{"class":621},[55,4992,1814],{"class":621},[55,4994,1814],{"class":621},[55,4996,4997],{"class":617}," /usr/bin/free -h ",[55,4999,5000],{"class":621},">>",[55,5002,5003],{"class":617}," /var/log/memory.log\n",[87,5005,5006,185,5009],{},[80,5007,5008],{},"Регулярный аудит процессов",[84,5010,5011,5016],{},[87,5012,5013,5014,170],{},"Ищите процессы с аномально высоким ",[26,5015,4229],{},[87,5017,5018],{},"Проверяйте контейнеры на соответствие лимитам.",[17,5020,5022],{"id":5021},"особенности-в-контейнерах-dockerkubernetes","Особенности в контейнерах (Docker/Kubernetes)",[22,5024,5025],{},"В контейнерах OOM Killer работает внутри изоляции cgroups, но если контейнер исчерпает свой лимит, ядро убьёт процесс внутри него.",[22,5027,5028,185],{},[80,5029,5030],{},"Docker",[46,5032,5034],{"className":48,"code":5033,"language":50,"meta":51,"style":51},"# Запуск с лимитом 512 МБ RAM и 1 ГБ swap\ndocker run -d --memory=512m --memory-swap=1g ваш-образ\n\n# Проверка лимитов\ndocker stats\n",[26,5035,5036,5041,5061,5065,5070],{"__ignoreMap":51},[55,5037,5038],{"class":57,"line":58},[55,5039,5040],{"class":297},"# Запуск с лимитом 512 МБ RAM и 1 ГБ swap\n",[55,5042,5043,5046,5049,5052,5055,5058],{"class":57,"line":353},[55,5044,5045],{"class":61},"docker",[55,5047,5048],{"class":259}," run",[55,5050,5051],{"class":64}," -d",[55,5053,5054],{"class":64}," --memory=512m",[55,5056,5057],{"class":64}," --memory-swap=1g",[55,5059,5060],{"class":259}," ваш-образ\n",[55,5062,5063],{"class":57,"line":368},[55,5064,372],{"emptyLinePlaceholder":371},[55,5066,5067],{"class":57,"line":375},[55,5068,5069],{"class":297},"# Проверка лимитов\n",[55,5071,5072,5074],{"class":57,"line":381},[55,5073,5045],{"class":61},[55,5075,5076],{"class":259}," stats\n",[22,5078,5079,185],{},[80,5080,5081],{},"Kubernetes",[46,5083,5087],{"className":5084,"code":5085,"language":5086,"meta":51,"style":51},"language-yaml shiki shiki-themes github-light github-dark","resources:\n  limits:\n    memory: \"512Mi\"\n    cpu: \"500m\"\n  requests:\n    memory: \"256Mi\"\n","yaml",[26,5088,5089,5098,5105,5116,5126,5133],{"__ignoreMap":51},[55,5090,5091,5095],{"class":57,"line":58},[55,5092,5094],{"class":5093},"s9eBZ","resources",[55,5096,5097],{"class":617},":\n",[55,5099,5100,5103],{"class":57,"line":353},[55,5101,5102],{"class":5093},"  limits",[55,5104,5097],{"class":617},[55,5106,5107,5110,5113],{"class":57,"line":368},[55,5108,5109],{"class":5093},"    memory",[55,5111,5112],{"class":617},": ",[55,5114,5115],{"class":259},"\"512Mi\"\n",[55,5117,5118,5121,5123],{"class":57,"line":375},[55,5119,5120],{"class":5093},"    cpu",[55,5122,5112],{"class":617},[55,5124,5125],{"class":259},"\"500m\"\n",[55,5127,5128,5131],{"class":57,"line":381},[55,5129,5130],{"class":5093},"  requests",[55,5132,5097],{"class":617},[55,5134,5135,5137,5139],{"class":57,"line":711},[55,5136,5109],{"class":5093},[55,5138,5112],{"class":617},[55,5140,5141],{"class":259},"\"256Mi\"\n",[22,5143,5144,5145,1182,5148,5151],{},"Убедитесь, что ",[26,5146,5147],{},"requests",[26,5149,5150],{},"limits"," установлены адекватно. При превышении лимита поды будет убит (OOMKilled).",[17,5153,5155],{"id":5154},"частые-ошибки-при-настройке","Частые ошибки при настройке",[84,5157,5158,5166,5172,5182],{},[87,5159,5160,5165],{},[80,5161,5162,5163],{},"Защита всех процессов через ",[26,5164,4592],{},": Это отключает OOM Killer полностью, что может привести к полной блокировке системы при нехватке памяти.",[87,5167,5168,5171],{},[80,5169,5170],{},"Установка слишком высоких лимитов cgroups",": Если лимит выше, чем физическая RAM, OOM Killer всё равно сработает на уровне хоста.",[87,5173,5174,5177,5178,5181],{},[80,5175,5176],{},"Игнорирование swap",": Swap замедляет систему, но может дать время на реакцию. Полный отказ от swap (",[26,5179,5180],{},"swapoff -a",") ускорит срабатывание OOM Killer.",[87,5183,5184,5187,5188,5190,5191,5194,5195,5197],{},[80,5185,5186],{},"Неправильное толкование логов",": Сообщение ",[26,5189,4218],{}," может быть и от ручного ",[26,5192,5193],{},"kill -9",". Всегда проверяйте ",[26,5196,583],{}," и код выхода процесса (137 = SIGKILL, часто от OOM).",[17,5199,5201],{"id":5200},"что-дальше","Что дальше?",[22,5203,5204],{},"После применения мер проверьте:",[497,5206,5207,5214,5217],{},[87,5208,5209,5210,5213],{},"Стабильность работы под нагрузкой (тесты с ",[26,5211,5212],{},"stress-ng"," или реальной нагрузкой).",[87,5215,5216],{},"Логи на отсутствие новых записей OOM Killer.",[87,5218,5219],{},"Корректность работы защищённых процессов (не потребляют ли они слишком много памяти в ущерб другим).",[22,5221,5222],{},"Если проблема остаётся, рассмотрите архитектурные изменения: шардирование, кэширование, использование более эффективных алгоритмов обработки данных.",[22,5224,5225,5228],{},[80,5226,5227],{},"Запомните",": OOM Killer — это последний рубеж защиты системы. Лучшая стратегия — не допускать ситуаций, когда он срабатывает, через мониторинг и грамотное планирование ресурсов.",[1205,5230,5231],{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}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 .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}html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}",{"title":51,"searchDepth":353,"depth":353,"links":5233},[5234,5235,5236,5237,5244,5245,5246,5247],{"id":4188,"depth":353,"text":4189},{"id":4222,"depth":353,"text":4223},{"id":4250,"depth":353,"text":4251},{"id":4488,"depth":353,"text":4489,"children":5238},[5239,5241,5242,5243],{"id":4492,"depth":368,"text":5240},"Шаг 1: Настройка oom_score_adj для защиты ключевых процессов",{"id":4596,"depth":368,"text":4597},{"id":4759,"depth":368,"text":4760},{"id":4837,"depth":368,"text":4838},{"id":4936,"depth":353,"text":4937},{"id":5021,"depth":353,"text":5022},{"id":5154,"depth":353,"text":5155},{"id":5200,"depth":353,"text":5201},"2026-02-14 11:52:27","Подробное руководство по работе OOM Killer в Linux. Узнайте, как анализировать логи, настроить параметры ядра и предотвратить завершение процессов из-за нехватки памяти. Пошаговые инструкции для администраторов.",[5251,5254,5257,5260],{"answer":5252,"question":5253},"OOM Killer работает на основе очков (`oom_score`), которые вычисляются исходя из использования памяти и других факторов. Если процесс потребляет много RAM, даже будучи системным, он может быть убит. Настройка `oom_score_adj` помогает защитить критические процессы.","Почему OOM Killer убивает важные системные процессы?",{"answer":5255,"question":5256},"Можно установить `vm.panic_on_oom=2` в `/etc/sysctl.conf` и применить `sysctl -p`. При нехватке памяти система вместо убийства процессов упадёт в панику (kernel panic), что полезно для отладки, но не для продакшена.","Как временно отключить OOM Killer?",{"answer":5258,"question":5259},"Для процесса с PID `\u003CPID>` запишите отрицательное значение (например, `-1000`) в `/proc/\u003CPID>/oom_score_adj`. Это значительно снизит его `oom_score` и вероятность убийства. Для постоянной защиты настройте через systemd или скрипт.","Как защитить конкретный процесс от OOM Killer?",{"answer":5261,"question":5262},"Да, но контейнеры изолированы через cgroups. OOM Killer убивает процессы внутри контейнера, если контейнер исчерпал свой лимит памяти. Настройте `--memory` и `--memory-swap` при запуске контейнера, а также `oom_score_adj` внутри него.","OOM Killer работает внутри Docker-контейнеров?",[5264,5267,5270,5273,5276,5279],{"name":5265,"text":5266},"Анализ логов ядра на наличие записей OOM Killer","Используйте команду `dmesg | grep -i kill` или просмотрите `/var/log/syslog` на наличие строк с \\Out of memory\\ и \\Killed process\\. Запишите имя процесса и его PID.",{"name":5268,"text":5269},"Проверка текущего использования памяти","Выполните `free -h` для общего обзора памяти и swap. Используйте `top` или `htop` для сортировки процессов по использованию RAM (клавиша `M` в htop).",{"name":5271,"text":5272},"Настройка oom_score_adj для защиты процесса","Для процесса с PID `\u003CPID>` выполните `echo -1000 > /proc/\u003CPID>/oom_score_adj`. Это значение от -1000 до +1000, где -1000 максимально защищает процесс. Для перманентной настройки используйте systemd-юнит с `OOMScoreAdjust=-1000`.",{"name":5274,"text":5275},"Использование cgroups для ограничения памяти","Создайте cgroup через systemd: `systemd-run --scope -p MemoryMax=500M ваша_команда`. Или вручную: `mkdir /sys/fs/cgroup/mylimit && echo 500M > /sys/fs/cgroup/mylimit/memory.max` и запустите процесс в этой группе.",{"name":5277,"text":5278},"Настройка параметров ядра","Отредактируйте `/etc/sysctl.conf` и добавьте строки: `vm.panic_on_oom=2` (паника вместо убийства) или `vm.overcommit_memory=2` (запрет переcommit'а памяти). Примените `sysctl -p`.",{"name":5280,"text":5281},"Оптимизация приложения или увеличение RAM","Если проблема хроническая, проанализируйте утечки памяти в приложении (например, через `valgrind`). На сервере без возможности оптимизации рассмотрите апгрейд оперативной памяти.","PT30M",[5284,5285,5286,5287,4496,5288,5289,5290,5291,5292],"oom killer linux","killed process linux","нехватка памяти linux","как отключить oom killer","linux out of memory","убийство процессов ядром","cgroups memory limit","dmesg oom killer","vm.overcommit_memory",{},[5295,1297,5296],"/errors/linux/out-of-memory","/guides/linux/systemd-cgroups","Ошибки Linux",{"title":4181,"description":5249},"high","errors/linux/oom-killer","Этот гайд объясняет механизм OOM Killer в Linux и предоставляет практические шаги по диагностике и предотвращению завершения процессов из-за нехватки памяти. Вы научитесь анализировать логи, настраивать приоритеты процессов и управлять памятью с помощью cgroups.",[5303,5304,5305,4177,5306,5307],"linux errors","oom killer","memory management","kernel","cgroups","yLKZsBBOdw0WxB2klhnj1kgSj9b0cNfsSTCuvycB6Aw"]