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