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