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