[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"page-ru-/guides/linux/logrotate-setup":3,"mdc-bb2242-key":1071,"mdc--1mub5c-key":1098,"mdc-kvqqpv-key":1106,"mdc--pnirtf-key":1141,"mdc-qxl0d7-key":1164,"mdc--7kxmrt-key":1194,"mdc--otctgh-key":1245,"mdc-bogogj-key":1268,"related-/guides/linux/nginx-log-rotation,/guides/linux/rsyslog-setup,/errors/linux/logrotate-error":1292},{"id":4,"title":5,"appliesTo":6,"author":12,"body":13,"canonical":1005,"code":1005,"createdAt":1006,"description":1007,"difficulty":1008,"draft":1009,"estimatedTime":1010,"extension":1011,"faq":1012,"howToSteps":1025,"howToTotalTime":1038,"image":1005,"keywords":1039,"locale":1050,"meta":1051,"navigation":1052,"path":1053,"platform":1054,"related":1055,"section":1059,"seo":1060,"severity":1005,"stem":1061,"summary":1062,"tags":1063,"twitterCreator":1005,"twitterSite":1005,"type":1069,"updatedAt":1006,"__hash__":1070},"content_ru/guides/linux/logrotate-setup.md","Настройка logrotate в Linux: полное руководство по ротации логов",[7,8,9,10,11],"Ubuntu 20.04/22.04","Debian 11/12","CentOS 7/8","RHEL 7/8","Linux ядро 4.x+","FixPedia Team",{"type":14,"value":15,"toc":988},"minimark",[16,21,29,45,48,52,55,125,129,132,147,150,166,169,253,258,327,333,337,340,428,435,497,501,504,623,626,630,633,649,656,671,674,682,685,691,695,698,783,787,792,801,819,823,827,847,851,877,881,895,912,916,923,948,955,984],[17,18,20],"h2",{"id":19},"введение-зачем-это-нужно","Введение / Зачем это нужно",[22,23,24,28],"p",{},[25,26,27],"strong",{},"Logrotate"," — это стандартный утилита в Linux для автоматической ротации, сжатия и удаления старых лог-файлов. Без настройки логи могут бесконечно расти, заполняя весь диск и вызывая сбои в работе системы. Настроив logrotate, вы:",[30,31,32,36,39,42],"ul",{},[33,34,35],"li",{},"Автоматически управляете размером логов.",[33,37,38],{},"Сохраняете историю за заданный период (например, 7 дней).",[33,40,41],{},"Сжимаете архивы, экономя место.",[33,43,44],{},"Обеспечивайте бесперебойную работу сервисов, которые пишут логи.",[22,46,47],{},"Этот гайд подойдет для администраторов Linux и разработчиков, которые работают с серверами (веб-серверы, базы данных, кастомные приложения).",[17,49,51],{"id":50},"требования-подготовка","Требования / Подготовка",[22,53,54],{},"Перед началом убедитесь, что:",[56,57,58,73,116],"ol",{},[33,59,60,63,64,68,69,72],{},[25,61,62],{},"У вас есть root-доступ"," или права ",[65,66,67],"code",{},"sudo"," для редактирования файлов в ",[65,70,71],{},"/etc/",".",[33,74,75,78,79,101,102],{},[25,76,77],{},"Logrotate установлен"," (обычно есть по умолчанию в большинстве дистрибутивов). Проверьте командой:\n",[80,81,86],"pre",{"className":82,"code":83,"language":84,"meta":85,"style":85},"language-bash shiki shiki-themes github-light github-dark","which logrotate\n","bash","",[65,87,88],{"__ignoreMap":85},[89,90,93,97],"span",{"class":91,"line":92},"line",1,[89,94,96],{"class":95},"sj4cs","which",[89,98,100],{"class":99},"sZZnC"," logrotate\n","\nЕсли нет, установите:\n",[30,103,104,110],{},[33,105,106,107],{},"Ubuntu/Debian: ",[65,108,109],{},"sudo apt update && sudo apt install logrotate",[33,111,112,113],{},"CentOS/RHEL: ",[65,114,115],{},"sudo yum install logrotate",[33,117,118,121,122,72],{},[25,119,120],{},"Логи пишутся в файлы",", а не только в stdout/stderr. Если приложение пишет в stdout (например, Docker без драйвера json-file), настройте перенаправление в файл или используйте ",[65,123,124],{},"systemd-journald",[17,126,128],{"id":127},"шаг-1-создание-конфигурационного-файла","Шаг 1: Создание конфигурационного файла",[22,130,131],{},"Logrotate читает конфигурации из двух мест:",[30,133,134,140],{},[33,135,136,137],{},"Основной файл: ",[65,138,139],{},"/etc/logrotate.conf",[33,141,142,143,146],{},"Дополнительные файлы в ",[65,144,145],{},"/etc/logrotate.d/"," (рекомендуется для каждого сервиса отдельно).",[22,148,149],{},"Создайте конфиг для вашего приложения. Например, для веб-сервера Nginx:",[80,151,153],{"className":82,"code":152,"language":84,"meta":85,"style":85},"sudo nano /etc/logrotate.d/nginx\n",[65,154,155],{"__ignoreMap":85},[89,156,157,160,163],{"class":91,"line":92},[89,158,67],{"class":159},"sScJk",[89,161,162],{"class":99}," nano",[89,164,165],{"class":99}," /etc/logrotate.d/nginx\n",[22,167,168],{},"Добавьте базовый шаблон:",[80,170,174],{"className":171,"code":172,"language":173,"meta":85,"style":85},"language-ini shiki shiki-themes github-light github-dark","/var/log/nginx/*.log {\n    daily\n    missingok\n    rotate 14\n    compress\n    delaycompress\n    notifempty\n    create 644 www-data www-data\n    sharedscripts\n    postrotate\n        [ ! -f /var/run/nginx.pid ] || kill -USR1 `cat /var/run/nginx.pid`\n    endscript\n}\n","ini",[65,175,176,181,187,193,199,205,211,217,223,229,235,241,247],{"__ignoreMap":85},[89,177,178],{"class":91,"line":92},[89,179,180],{},"/var/log/nginx/*.log {\n",[89,182,184],{"class":91,"line":183},2,[89,185,186],{},"    daily\n",[89,188,190],{"class":91,"line":189},3,[89,191,192],{},"    missingok\n",[89,194,196],{"class":91,"line":195},4,[89,197,198],{},"    rotate 14\n",[89,200,202],{"class":91,"line":201},5,[89,203,204],{},"    compress\n",[89,206,208],{"class":91,"line":207},6,[89,209,210],{},"    delaycompress\n",[89,212,214],{"class":91,"line":213},7,[89,215,216],{},"    notifempty\n",[89,218,220],{"class":91,"line":219},8,[89,221,222],{},"    create 644 www-data www-data\n",[89,224,226],{"class":91,"line":225},9,[89,227,228],{},"    sharedscripts\n",[89,230,232],{"class":91,"line":231},10,[89,233,234],{},"    postrotate\n",[89,236,238],{"class":91,"line":237},11,[89,239,240],{},"        [ ! -f /var/run/nginx.pid ] || kill -USR1 `cat /var/run/nginx.pid`\n",[89,242,244],{"class":91,"line":243},12,[89,245,246],{},"    endscript\n",[89,248,250],{"class":91,"line":249},13,[89,251,252],{},"}\n",[22,254,255],{},[25,256,257],{},"Пояснение параметров:",[30,259,260,266,272,278,284,294,300,306,312,322],{},[33,261,262,265],{},[65,263,264],{},"/var/log/nginx/*.log"," — путь к логам (поддерживаются wildcards).",[33,267,268,271],{},[65,269,270],{},"daily"," — ротация каждый день.",[33,273,274,277],{},[65,275,276],{},"missingok"," — игнорировать, если файл лога отсутствует.",[33,279,280,283],{},[65,281,282],{},"rotate 14"," — хранить 14 архивов.",[33,285,286,289,290,293],{},[65,287,288],{},"compress"," — сжимать ротированные логи gzip (файлы ",[65,291,292],{},".gz",").",[33,295,296,299],{},[65,297,298],{},"delaycompress"," — сжимать не сразу, а на следующий день (чтобы можно было читать свежий лог).",[33,301,302,305],{},[65,303,304],{},"notifempty"," — не ротировать пустые файлы.",[33,307,308,311],{},[65,309,310],{},"create 644 www-data www-data"," — создавать новый пустой лог-файл с указанными правами и владельцем после ротации.",[33,313,314,317,318,321],{},[65,315,316],{},"sharedscripts"," — выполнять скрипты (",[65,319,320],{},"postrotate",") один раз для всех файлов в блоке.",[33,323,324,326],{},[65,325,320],{}," — после ротации отправить сигнал Nginx, чтобы он переоткрыл файлы логов.",[22,328,329,330,293],{},"Для других приложений укажите свои пути и команды переоткрытия логов (например, для Apache: ",[65,331,332],{},"invoke-rc.d apache2 reload",[17,334,336],{"id":335},"шаг-2-настройка-параметров-ротации","Шаг 2: Настройка параметров ротации",[22,338,339],{},"Вы можете настроить частоту и другие опции под свои нужды:",[30,341,342,363,376,389,405,419],{},[33,343,344,347,348,350,351,354,355,358,359,362],{},[25,345,346],{},"Частота:"," ",[65,349,270],{}," (ежедневно), ",[65,352,353],{},"weekly"," (еженедельно), ",[65,356,357],{},"monthly"," (ежемесячно). Можно также использовать ",[65,360,361],{},"hourly"," (ежечасно), если logrotate запускается из cron hourly (обычно нет).",[33,364,365,347,368,371,372,375],{},[25,366,367],{},"Количество архивов:",[65,369,370],{},"rotate N"," — сколько последних архивов хранить. Например, ",[65,373,374],{},"rotate 30"," — хранить 30 дней.",[33,377,378,347,381,384,385,388],{},[25,379,380],{},"Удаление по возрасту:",[65,382,383],{},"maxage N"," — удалять архивы старше N дней (даже если ",[65,386,387],{},"rotate"," не достигнуто).",[33,390,391,347,394,397,398,400,401,404],{},[25,392,393],{},"Размер вместо времени:",[65,395,396],{},"size 100M"," — ротировать, когда лог достигает 100 МБ (можно комбинировать с частотой: ",[65,399,270],{}," и ",[65,402,403],{},"size"," работают вместе).",[33,406,407,347,410,412,413,416,417,72],{},[25,408,409],{},"Сжатие:",[65,411,288],{}," (gzip) или ",[65,414,415],{},"nocompress",". Для более быстрого сжатия можно использовать ",[65,418,298],{},[33,420,421,347,424,427],{},[25,422,423],{},"Права на новые файлы:",[65,425,426],{},"create mode owner group"," (как в примере выше).",[22,429,430,431,434],{},"Пример для логов приложения, которое пишет в ",[65,432,433],{},"/opt/myapp/logs/app.log"," и требует перезапуска службы:",[80,436,438],{"className":171,"code":437,"language":173,"meta":85,"style":85},"/opt/myapp/logs/app.log {\n    weekly\n    rotate 8\n    compress\n    delaycompress\n    missingok\n    notifempty\n    create 640 myuser mygroup\n    sharedscripts\n    postrotate\n        systemctl restart myapp.service > /dev/null 2>&1 || true\n    endscript\n}\n",[65,439,440,445,450,455,459,463,467,471,476,480,484,489,493],{"__ignoreMap":85},[89,441,442],{"class":91,"line":92},[89,443,444],{},"/opt/myapp/logs/app.log {\n",[89,446,447],{"class":91,"line":183},[89,448,449],{},"    weekly\n",[89,451,452],{"class":91,"line":189},[89,453,454],{},"    rotate 8\n",[89,456,457],{"class":91,"line":195},[89,458,204],{},[89,460,461],{"class":91,"line":201},[89,462,210],{},[89,464,465],{"class":91,"line":207},[89,466,192],{},[89,468,469],{"class":91,"line":213},[89,470,216],{},[89,472,473],{"class":91,"line":219},[89,474,475],{},"    create 640 myuser mygroup\n",[89,477,478],{"class":91,"line":225},[89,479,228],{},[89,481,482],{"class":91,"line":231},[89,483,234],{},[89,485,486],{"class":91,"line":237},[89,487,488],{},"        systemctl restart myapp.service > /dev/null 2>&1 || true\n",[89,490,491],{"class":91,"line":243},[89,492,246],{},[89,494,495],{"class":91,"line":249},[89,496,252],{},[17,498,500],{"id":499},"шаг-3-тестирование-конфигурации","Шаг 3: Тестирование конфигурации",[22,502,503],{},"После создания конфига обязательно протестируйте его:",[56,505,506,537,587],{},[33,507,508,511,529,532,533,536],{},[25,509,510],{},"Сухой прогон (dry-run):",[80,512,514],{"className":82,"code":513,"language":84,"meta":85,"style":85},"sudo logrotate -d /etc/logrotate.conf\n",[65,515,516],{"__ignoreMap":85},[89,517,518,520,523,526],{"class":91,"line":92},[89,519,67],{"class":159},[89,521,522],{"class":99}," logrotate",[89,524,525],{"class":95}," -d",[89,527,528],{"class":99}," /etc/logrotate.conf\n",[530,531],"br",{},"Флаг ",[65,534,535],{},"-d"," показывает, какие действия будут выполнены, но не применяет их. Ищите в выводе ошибки (например, \"error: bad option\" или \"cannot open\").",[33,538,539,542,558,532,560,563,564],{},[25,540,541],{},"Принудительный запуск:",[80,543,545],{"className":82,"code":544,"language":84,"meta":85,"style":85},"sudo logrotate -f /etc/logrotate.conf\n",[65,546,547],{"__ignoreMap":85},[89,548,549,551,553,556],{"class":91,"line":92},[89,550,67],{"class":159},[89,552,522],{"class":99},[89,554,555],{"class":95}," -f",[89,557,528],{"class":99},[530,559],{},[65,561,562],{},"-f"," (force) запускает ротацию независимо от времени. После этого проверьте, что:",[30,565,566,576,582],{},[33,567,568,569,572,573,293],{},"Старые логи переименованы (например, ",[65,570,571],{},"access.log.1",", ",[65,574,575],{},"access.log.2.gz",[33,577,578,579,293],{},"Создан новый пустой лог-файл (если указан ",[65,580,581],{},"create",[33,583,584,585,72],{},"Сжатые файлы имеют расширение ",[65,586,292],{},[33,588,589,592,593],{},[25,590,591],{},"Проверка логов самого logrotate:","\nОбычно logrotate пишет свои ошибки в syslog. Проверьте:",[80,594,596],{"className":82,"code":595,"language":84,"meta":85,"style":85},"grep logrotate /var/log/syslog\n# или для RHEL/CentOS:\ngrep logrotate /var/log/messages\n",[65,597,598,608,614],{"__ignoreMap":85},[89,599,600,603,605],{"class":91,"line":92},[89,601,602],{"class":159},"grep",[89,604,522],{"class":99},[89,606,607],{"class":99}," /var/log/syslog\n",[89,609,610],{"class":91,"line":183},[89,611,613],{"class":612},"sJ8bj","# или для RHEL/CentOS:\n",[89,615,616,618,620],{"class":91,"line":189},[89,617,602],{"class":159},[89,619,522],{"class":99},[89,621,622],{"class":99}," /var/log/messages\n",[624,625],"in-article-ad",{},[17,627,629],{"id":628},"шаг-4-автоматизация-через-cron","Шаг 4: Автоматизация через cron",[22,631,632],{},"Logrotate по умолчанию запускается из cron ежедневно. Проверьте наличие скрипта:",[80,634,636],{"className":82,"code":635,"language":84,"meta":85,"style":85},"ls -l /etc/cron.daily/logrotate\n",[65,637,638],{"__ignoreMap":85},[89,639,640,643,646],{"class":91,"line":92},[89,641,642],{"class":159},"ls",[89,644,645],{"class":95}," -l",[89,647,648],{"class":99}," /etc/cron.daily/logrotate\n",[22,650,651,652,655],{},"Обычно это символическая ссылка на ",[65,653,654],{},"/usr/sbin/logrotate",". Если нужно изменить расписание (например, на еженедельное), отредактируйте crontab root:",[80,657,659],{"className":82,"code":658,"language":84,"meta":85,"style":85},"sudo crontab -e\n",[65,660,661],{"__ignoreMap":85},[89,662,663,665,668],{"class":91,"line":92},[89,664,67],{"class":159},[89,666,667],{"class":99}," crontab",[89,669,670],{"class":95}," -e\n",[22,672,673],{},"И замените строку (если есть) на:",[80,675,680],{"className":676,"code":678,"language":679},[677],"language-text","0 3 * * 0 /usr/sbin/logrotate /etc/logrotate.conf\n","text",[65,681,678],{"__ignoreMap":85},[22,683,684],{},"Это запустит logrotate в 3:00 утра каждое воскресенье.",[22,686,687,690],{},[25,688,689],{},"Важно:"," Не запускайте logrotate слишком часто (например, каждые 5 минут) для больших логов — это может нагрузить систему.",[17,692,694],{"id":693},"проверка-результата","Проверка результата",[22,696,697],{},"После принудительного запуска (или по истечении периода) убедитесь, что:",[56,699,700,730,738,748,771],{},[33,701,702,705,706,721,723,724,726,727,729],{},[25,703,704],{},"Ротированные файлы появились"," в папке с логами:",[80,707,709],{"className":82,"code":708,"language":84,"meta":85,"style":85},"ls -lh /var/log/nginx/\n",[65,710,711],{"__ignoreMap":85},[89,712,713,715,718],{"class":91,"line":92},[89,714,642],{"class":159},[89,716,717],{"class":95}," -lh",[89,719,720],{"class":99}," /var/log/nginx/\n",[530,722],{},"Вы должны увидеть ",[65,725,571],{}," (прошлый день) и, возможно, ",[65,728,575],{}," (архив).",[33,731,732,735,736,293],{},[25,733,734],{},"Новый лог-файл создан"," и имеет правильные права (если использовали ",[65,737,581],{},[33,739,740,743,744,747],{},[25,741,742],{},"Приложение продолжает писать логи"," в новый файл. Проверьте, что в ",[65,745,746],{},"access.log"," (новом) появляются записи.",[33,749,750,753,754],{},[25,751,752],{},"Размер диска не растет бесконтрольно",":",[80,755,757],{"className":82,"code":756,"language":84,"meta":85,"style":85},"sudo du -sh /var/log/nginx/\n",[65,758,759],{"__ignoreMap":85},[89,760,761,763,766,769],{"class":91,"line":92},[89,762,67],{"class":159},[89,764,765],{"class":99}," du",[89,767,768],{"class":95}," -sh",[89,770,720],{"class":99},[33,772,773,778,779,782],{},[25,774,775,776],{},"Количество архивов не превышает ",[65,777,387],{},". Если хранится больше, возможно, ",[65,780,781],{},"maxage"," конфликтует или старые файлы не удаляются из-за прав.",[17,784,786],{"id":785},"возможные-проблемы","Возможные проблемы",[788,789,791],"h3",{"id":790},"_1-ошибка-permission-denied-при-ротации-или-создании-файлов","1. Ошибка \"Permission denied\" при ротации или создании файлов",[22,793,794,797,798],{},[25,795,796],{},"Причина:"," Пользователь, от которого запущен logrotate (обычно root), не имеет прав на запись в директорию с логами или на создание файлов с указанными владельцем/группой.\n",[25,799,800],{},"Решение:",[30,802,803,808],{},[33,804,805,806,293],{},"Убедитесь, что директория с логами доступна для записи root (или укажите правильного владельца в ",[65,807,581],{},[33,809,810,811,814,815,818],{},"Если логи пишет непривилегированный пользователь (например, ",[65,812,813],{},"www-data","), используйте ",[65,816,817],{},"su www-data"," в блоке конфига (если logrotate поддерживает) или настройте права так, чтобы root мог менять файлы.",[788,820,822],{"id":821},"_2-logrotate-не-ротирует-логи-хотя-прошло-время","2. Logrotate не ротирует логи, хотя прошло время",[22,824,825],{},[25,826,796],{},[30,828,829,835,841],{},[33,830,831,832,834],{},"Неправильная настройка частоты (например, ",[65,833,270],{},", но вы тестируете в тот же день).",[33,836,837,838,840],{},"Файл лога не изменился с последней ротации (если есть ",[65,839,304],{}," и файл пустой).",[33,842,843,844,293],{},"Logrotate не запускается из cron (проверьте ",[65,845,846],{},"/etc/cron.daily/",[22,848,849],{},[25,850,800],{},[30,852,853,860,866],{},[33,854,855,856,859],{},"Используйте ",[65,857,858],{},"logrotate -f"," для принудительной ротации.",[33,861,862,863,865],{},"Уберите ",[65,864,304],{},", если хотите ротировать пустые файлы.",[33,867,868,869,872,873,876],{},"Проверьте, что cron работает: ",[65,870,871],{},"systemctl status cron"," (Debian/Ubuntu) или ",[65,874,875],{},"crond"," (RHEL/CentOS).",[788,878,880],{"id":879},"_3-приложение-перестает-писать-логи-после-ротации","3. Приложение перестает писать логи после ротации",[22,882,883,885,886,888,889,892,893],{},[25,884,796],{}," Приложение не переоткрывает файл лога после его переименования. Обычно это решается сигналом в ",[65,887,320],{}," (например, ",[65,890,891],{},"kill -USR1"," для Nginx) или перезапуском службы.\n",[25,894,800],{},[30,896,897,903,909],{},[33,898,899,900,902],{},"Убедитесь, что команда в ",[65,901,320],{}," корректна и не вызывает ошибок. Протестируйте ее вручную.",[33,904,905,906,72],{},"Для systemd-сервисов можно использовать ",[65,907,908],{},"systemctl reload \u003Cservice>",[33,910,911],{},"Если приложение пишет в файл напрямую без буферизации, оно может продолжить писать в старый файл (который переименован). В этом случае перезапуск службы необходим.",[788,913,915],{"id":914},"_4-сжатие-занимает-много-времени-или-ресурсов","4. Сжатие занимает много времени или ресурсов",[22,917,918,920,921],{},[25,919,796],{}," Большие логи сжимаются в момент пиковой нагрузки.\n",[25,922,800],{},[30,924,925,930,937],{},[33,926,855,927,929],{},[65,928,298],{}," — сжатие откладывается до следующего запуска logrotate.",[33,931,932,933,936],{},"Настройте ротацию по размеру (",[65,934,935],{},"size 500M",") в менее загруженное время.",[33,938,939,940,943,944,947],{},"Рассмотрите использование ",[65,941,942],{},"compresscmd"," с более быстрым алгоритмом (например, ",[65,945,946],{},"pigz"," для параллельного сжатия), если установлен.",[788,949,951,952,954],{"id":950},"_5-ротируются-не-те-файлы-например-ротируются-архивы-gz","5. Ротируются не те файлы (например, ротируются архивы ",[65,953,292],{},")",[22,956,957,959,960,963,964,966,967,969,970,973,974,976,977,980,981,983],{},[25,958,796],{}," Шаблон пути слишком общий (например, ",[65,961,962],{},"/var/log/app/*"," захватывает и ",[65,965,292],{}," файлы).\n",[25,968,800],{}," Уточните шаблон: ",[65,971,972],{},"/var/log/app/*.log"," вместо ",[65,975,962],{},". Или добавьте ",[65,978,979],{},"prerotate","/",[65,982,320],{}," для исключения, но лучше уточнить шаблон.",[985,986,987],"style",{},"html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}",{"title":85,"searchDepth":183,"depth":183,"links":989},[990,991,992,993,994,995,996,997],{"id":19,"depth":183,"text":20},{"id":50,"depth":183,"text":51},{"id":127,"depth":183,"text":128},{"id":335,"depth":183,"text":336},{"id":499,"depth":183,"text":500},{"id":628,"depth":183,"text":629},{"id":693,"depth":183,"text":694},{"id":785,"depth":183,"text":786,"children":998},[999,1000,1001,1002,1003],{"id":790,"depth":189,"text":791},{"id":821,"depth":189,"text":822},{"id":879,"depth":189,"text":880},{"id":914,"depth":189,"text":915},{"id":950,"depth":189,"text":1004},"5. Ротируются не те файлы (например, ротируются архивы .gz)",null,"2026-04-08 08:52:46","Узнайте, как правильно настроить logrotate для автоматической ротации логов в Linux. Пошаговая инструкция с примерами конфигурации, тестированием и решением частых проблем. Начните настройку за 15 минут!","easy",false,"15-20 мин","md",[1013,1016,1019,1022],{"question":1014,"answer":1015},"Как проверить, что logrotate работает корректно?","Выполните `logrotate -d /etc/logrotate.conf` для тестового прогона без изменений или `logrotate -f /etc/logrotate.conf` для принудительного запуска. Также проверьте наличие ротированных файлов в целевых директориях.",{"question":1017,"answer":1018},"Какой интервал ротации выбрать: daily, weekly или monthly?","Выбирайте daily для высоконагруженных сервисов (веб-серверы, приложения), weekly для умеренной нагрузки и monthly для архивных или редко используемых логов. Учитывайте объем логов и политику хранения.",{"question":1020,"answer":1021},"Logrotate не удаляет старые логи, хотя указано rotate 7. Почему?","Чаще всего причина в отсутствии права на удаление у пользователя, от которого работает logrotate (обычно root). Проверьте права на директорию с логами и настройки `create`/`sharedscripts`. Также убедитесь, что `maxage` не конфликтует с `rotate`.",{"question":1023,"answer":1024},"Можно ли настроить logrotate для конкретного приложения, например, Docker?","Да. Создайте отдельный конфиг-файл в `/etc/logrotate.d/` (например, `docker`) и укажите пути к логам контейнеров. Убедитесь, что приложение пишет логи в файлы, а не в stdout/stderr, или настройте перехват логов через драйвер json-file.",[1026,1029,1032,1035],{"name":1027,"text":1028},"Создание конфигурационного файла","Создайте файл в `/etc/logrotate.d/` (например, `myapp`) или отредактируйте основной `/etc/logrotate.conf`. Настройте блок для вашего приложения, указав путь к логам и параметры ротации.",{"name":1030,"text":1031},"Настройка параметров ротации","Определите частоту (`daily`, `weekly`, `monthly`), количество хранимых архивов (`rotate 7`), сжатие (`compress`), создание новых файлов после ротации (`create 644 root root`) и другие опции.",{"name":1033,"text":1034},"Тестирование конфигурации","Запустите `logrotate -d /etc/logrotate.conf` для сухого прогона. Проверьте вывод на ошибки. Затем выполните `logrotate -f /etc/logrotate.conf` для принудительной ротации и убедитесь, что старые логи архивируются.",{"name":1036,"text":1037},"Добавление в cron","Logrotate обычно уже добавлен в cron (ежедневно в `/etc/cron.daily/logrotate`). Если нужно изменить расписание, отредактируйте crontab или настройте анимацию через `anacron`.","PT20M",[1040,1041,1042,1043,1044,1045,1046,1047,1048,1049],"настройка logrotate","ротация логов linux","logrotate конфигурация пример","как настроить logrotate","logrotate daily weekly monthly","autoremove logrotate","compress logrotate","logrotate ошибка permission denied","проверить logrotate","logrotate для nginx","ru_RU",{},true,"/guides/linux/logrotate-setup","linux",[1056,1057,1058],"/guides/linux/nginx-log-rotation","/guides/linux/rsyslog-setup","/errors/linux/logrotate-error","Гайды Linux",{"title":5,"description":1007},"guides/linux/logrotate-setup","Это руководство помогает системным администраторам и разработчикам настроить logrotate — стандартный инструмент Linux для управления логами. Вы научитесь создавать конфигурации, тестировать их и решать типичные проблемы, чтобы предотвратить переполнение диска логами.",[1054,1064,1065,1066,1067,84,1068],"logrotate","логи","администрирование","sysadmin","конфигурация","guide","ahkt3VWTea9ZIHrflAUkxxH13RPEEgbnXsNMkyXHXpw",{"data":1072,"body":1073},{},{"type":1074,"children":1075},"root",[1076],{"type":1077,"tag":22,"props":1078,"children":1079},"element",{},[1080,1082,1088,1090,1096],{"type":679,"value":1081},"Выполните ",{"type":1077,"tag":65,"props":1083,"children":1085},{"className":1084},[],[1086],{"type":679,"value":1087},"logrotate -d /etc/logrotate.conf",{"type":679,"value":1089}," для тестового прогона без изменений или ",{"type":1077,"tag":65,"props":1091,"children":1093},{"className":1092},[],[1094],{"type":679,"value":1095},"logrotate -f /etc/logrotate.conf",{"type":679,"value":1097}," для принудительного запуска. Также проверьте наличие ротированных файлов в целевых директориях.",{"data":1099,"body":1100},{},{"type":1074,"children":1101},[1102],{"type":1077,"tag":22,"props":1103,"children":1104},{},[1105],{"type":679,"value":1018},{"data":1107,"body":1108},{},{"type":1074,"children":1109},[1110],{"type":1077,"tag":22,"props":1111,"children":1112},{},[1113,1115,1120,1121,1126,1128,1133,1135,1140],{"type":679,"value":1114},"Чаще всего причина в отсутствии права на удаление у пользователя, от которого работает logrotate (обычно root). Проверьте права на директорию с логами и настройки ",{"type":1077,"tag":65,"props":1116,"children":1118},{"className":1117},[],[1119],{"type":679,"value":581},{"type":679,"value":980},{"type":1077,"tag":65,"props":1122,"children":1124},{"className":1123},[],[1125],{"type":679,"value":316},{"type":679,"value":1127},". Также убедитесь, что ",{"type":1077,"tag":65,"props":1129,"children":1131},{"className":1130},[],[1132],{"type":679,"value":781},{"type":679,"value":1134}," не конфликтует с ",{"type":1077,"tag":65,"props":1136,"children":1138},{"className":1137},[],[1139],{"type":679,"value":387},{"type":679,"value":72},{"data":1142,"body":1143},{},{"type":1074,"children":1144},[1145],{"type":1077,"tag":22,"props":1146,"children":1147},{},[1148,1150,1155,1156,1162],{"type":679,"value":1149},"Да. Создайте отдельный конфиг-файл в ",{"type":1077,"tag":65,"props":1151,"children":1153},{"className":1152},[],[1154],{"type":679,"value":145},{"type":679,"value":888},{"type":1077,"tag":65,"props":1157,"children":1159},{"className":1158},[],[1160],{"type":679,"value":1161},"docker",{"type":679,"value":1163},") и укажите пути к логам контейнеров. Убедитесь, что приложение пишет логи в файлы, а не в stdout/stderr, или настройте перехват логов через драйвер json-file.",{"data":1165,"body":1166},{},{"type":1074,"children":1167},[1168],{"type":1077,"tag":22,"props":1169,"children":1170},{},[1171,1173,1178,1179,1185,1187,1192],{"type":679,"value":1172},"Создайте файл в ",{"type":1077,"tag":65,"props":1174,"children":1176},{"className":1175},[],[1177],{"type":679,"value":145},{"type":679,"value":888},{"type":1077,"tag":65,"props":1180,"children":1182},{"className":1181},[],[1183],{"type":679,"value":1184},"myapp",{"type":679,"value":1186},") или отредактируйте основной ",{"type":1077,"tag":65,"props":1188,"children":1190},{"className":1189},[],[1191],{"type":679,"value":139},{"type":679,"value":1193},". Настройте блок для вашего приложения, указав путь к логам и параметры ротации.",{"data":1195,"body":1196},{},{"type":1074,"children":1197},[1198],{"type":1077,"tag":22,"props":1199,"children":1200},{},[1201,1203,1208,1209,1214,1215,1220,1222,1228,1230,1235,1237,1243],{"type":679,"value":1202},"Определите частоту (",{"type":1077,"tag":65,"props":1204,"children":1206},{"className":1205},[],[1207],{"type":679,"value":270},{"type":679,"value":572},{"type":1077,"tag":65,"props":1210,"children":1212},{"className":1211},[],[1213],{"type":679,"value":353},{"type":679,"value":572},{"type":1077,"tag":65,"props":1216,"children":1218},{"className":1217},[],[1219],{"type":679,"value":357},{"type":679,"value":1221},"), количество хранимых архивов (",{"type":1077,"tag":65,"props":1223,"children":1225},{"className":1224},[],[1226],{"type":679,"value":1227},"rotate 7",{"type":679,"value":1229},"), сжатие (",{"type":1077,"tag":65,"props":1231,"children":1233},{"className":1232},[],[1234],{"type":679,"value":288},{"type":679,"value":1236},"), создание новых файлов после ротации (",{"type":1077,"tag":65,"props":1238,"children":1240},{"className":1239},[],[1241],{"type":679,"value":1242},"create 644 root root",{"type":679,"value":1244},") и другие опции.",{"data":1246,"body":1247},{},{"type":1074,"children":1248},[1249],{"type":1077,"tag":22,"props":1250,"children":1251},{},[1252,1254,1259,1261,1266],{"type":679,"value":1253},"Запустите ",{"type":1077,"tag":65,"props":1255,"children":1257},{"className":1256},[],[1258],{"type":679,"value":1087},{"type":679,"value":1260}," для сухого прогона. Проверьте вывод на ошибки. Затем выполните ",{"type":1077,"tag":65,"props":1262,"children":1264},{"className":1263},[],[1265],{"type":679,"value":1095},{"type":679,"value":1267}," для принудительной ротации и убедитесь, что старые логи архивируются.",{"data":1269,"body":1270},{},{"type":1074,"children":1271},[1272],{"type":1077,"tag":22,"props":1273,"children":1274},{},[1275,1277,1283,1285,1291],{"type":679,"value":1276},"Logrotate обычно уже добавлен в cron (ежедневно в ",{"type":1077,"tag":65,"props":1278,"children":1280},{"className":1279},[],[1281],{"type":679,"value":1282},"/etc/cron.daily/logrotate",{"type":679,"value":1284},"). Если нужно изменить расписание, отредактируйте crontab или настройте анимацию через ",{"type":1077,"tag":65,"props":1286,"children":1288},{"className":1287},[],[1289],{"type":679,"value":1290},"anacron",{"type":679,"value":72},[1293],{"id":1294,"title":1295,"appliesTo":1296,"author":12,"body":1301,"canonical":1005,"code":2001,"createdAt":2002,"description":2003,"difficulty":2004,"draft":1009,"estimatedTime":2005,"extension":1011,"faq":2006,"howToSteps":2019,"howToTotalTime":2035,"image":1005,"keywords":2036,"locale":1050,"meta":2047,"navigation":1052,"path":1058,"platform":1054,"related":2048,"section":2052,"seo":2053,"severity":2004,"stem":2054,"summary":2055,"tags":2056,"twitterCreator":1005,"twitterSite":1005,"type":1473,"updatedAt":2002,"__hash__":2059},"content_ru/errors/linux/logrotate-error.md","Ошибка logrotate в Linux: причины и способы исправить",[1297,1298,1299,1300],"Ubuntu 20.04+","Debian 11+","CentOS 8/Rocky 8+","logrotate 3.11+",{"type":14,"value":1302,"toc":1990},[1303,1307,1313,1344,1347,1351,1433,1437,1445,1494,1498,1504,1607,1611,1617,1756,1760,1770,1838,1844,1847,1914,1916,1920,1926,1987],[17,1304,1306],{"id":1305},"что-означает-ошибка-logrotate","Что означает ошибка logrotate",[22,1308,1309,1310,1312],{},"Ошибка ",[25,1311,1064],{}," — это сбой в работе стандартной утилиты Linux для ротации (архивации и очистки) лог-файлов. Она обычно проявляется одним из следующих способов:",[30,1314,1315,1318,1335,1338],{},[33,1316,1317],{},"Логи не ротируются по расписанию (например, ежедневно или еженедельно).",[33,1319,1320,1321,1324,1325,1328,1329],{},"В системном журнале (",[65,1322,1323],{},"/var/log/syslog"," или ",[65,1326,1327],{},"/var/log/messages",") появляются записи вида:\n",[80,1330,1333],{"className":1331,"code":1332,"language":679,"meta":85},[677],"error: error opening /var/log/nginx/access.log: Permission denied\nerror: logrotate failed to rotate /var/log/syslog: No such file or directory\n",[65,1334,1332],{"__ignoreMap":85},[33,1336,1337],{},"Ротация происходит, но создаётся некорректный архив (пустой или с нулевым размером).",[33,1339,1340,1341,1343],{},"Утилита ",[65,1342,1064],{}," завершается с ненулевым кодом возврата при ручном запуске.",[22,1345,1346],{},"Ошибка не критична для работы системы, но может привести к переполнению диска или потере исторических данных логов.",[17,1348,1350],{"id":1349},"причины-возникновения","Причины возникновения",[56,1352,1353,1377,1393,1406,1415],{},[33,1354,1355,1358,1359,1361,1362,1364,1365,1368,1369,1372,1373,1376],{},[25,1356,1357],{},"Недостаточные права доступа",". Процесс ",[65,1360,1064],{}," (запускаемый от ",[65,1363,1074],{}," через ",[65,1366,1367],{},"cron",") не может прочитать исходный лог-файл или записать сжатый архив из-за неверных прав (",[65,1370,1371],{},"chmod",") или владельца (",[65,1374,1375],{},"chown",") файла/каталога.",[33,1378,1379,1382,1383,1385,1386,1388,1389,1392],{},[25,1380,1381],{},"Ошибки в конфигурации",". Синтаксическая ошибка в файле ",[65,1384,139],{}," или в одном из файлов в ",[65,1387,145],{},". Например, пропущена закрывающая фигурная скобка ",[65,1390,1391],{},"}"," или указан несуществующий путь.",[33,1394,1395,1398,1399,1324,1402,1405],{},[25,1396,1397],{},"Конфликт с другим процессом",". Другой демон (например, ",[65,1400,1401],{},"syslog-ng",[65,1403,1404],{},"rsyslog",") удерживает дескриптор лог-файла в момент попытки его ротации, что вызывает ошибку переименования.",[33,1407,1408,1411,1412,1414],{},[25,1409,1410],{},"Отсутствие лог-файла",". В конфигурации указан путь к логу, который был удалён или никогда не создавался, а опция ",[65,1413,276],{}," не указана.",[33,1416,1417,1422,1423,1425,1426,1429,1430,293],{},[25,1418,1419,1420],{},"Проблемы с ",[65,1421,1367],{},". Задание для регулярного запуска ",[65,1424,1064],{}," отсутствует или не работает (например, из-за проблем в ",[65,1427,1428],{},"/etc/crontab"," или файлах в ",[65,1431,1432],{},"/etc/cron.*",[17,1434,1436],{"id":1435},"способ-1-диагностика-через-тестовый-запуск","Способ 1: Диагностика через тестовый запуск",[22,1438,1439,1440,1444],{},"Это основной и самый информативный способ. Он покажет, что ",[1441,1442,1443],"em",{},"планировалось"," сделать, без реальных изменений.",[56,1446,1447,1468,1481],{},[33,1448,1449,1450,1464,1465,1467],{},"Выполните команду тестового прогона:\n",[80,1451,1452],{"className":82,"code":513,"language":84,"meta":85,"style":85},[65,1453,1454],{"__ignoreMap":85},[89,1455,1456,1458,1460,1462],{"class":91,"line":92},[89,1457,67],{"class":159},[89,1459,522],{"class":99},[89,1461,525],{"class":95},[89,1463,528],{"class":99},"\nФлаг ",[65,1466,535],{}," включает режим отладки.",[33,1469,1470,1471,572,1474,1324,1477,1480],{},"Внимательно изучите вывод. Ищите строки со словами ",[65,1472,1473],{},"error",[65,1475,1476],{},"ignoring",[65,1478,1479],{},"reading",". Они укажут на конкретный файл конфигурации и причину.",[33,1482,1483,1484,1490,1491,72],{},"Пример проблемного вывода:\n",[80,1485,1488],{"className":1486,"code":1487,"language":679,"meta":85},[677],"reading config file /etc/logrotate.d/nginx\nreading config file /etc/logrotate.d/nginx\nerror: error opening /var/log/nginx/access.log: Permission denied\nignoring /var/log/nginx/access.log because of error\n",[65,1489,1487],{"__ignoreMap":85},"\nЗдесь ясно видно, что проблема с правами на файл ",[65,1492,1493],{},"/var/log/nginx/access.log",[17,1495,1497],{"id":1496},"способ-2-проверка-и-исправление-прав-доступа","Способ 2: Проверка и исправление прав доступа",[22,1499,1500,1501,753],{},"Если диагностика указала на ",[65,1502,1503],{},"Permission denied",[56,1505,1506,1539,1581],{},[33,1507,1508,1509,1522,1523,1525,1526,1324,1529,1532,1533,1535,1536,1538],{},"Проверьте владельца и права на проблемный лог-файл и его родительский каталог:\n",[80,1510,1512],{"className":82,"code":1511,"language":84,"meta":85,"style":85},"ls -l /var/log/nginx/\n",[65,1513,1514],{"__ignoreMap":85},[89,1515,1516,1518,1520],{"class":91,"line":92},[89,1517,642],{"class":159},[89,1519,645],{"class":95},[89,1521,720],{"class":99},"\nОбычно лог-файлы должны принадлежать пользователю, который их пишет (например, ",[65,1524,813],{}," для nginx), а группе ",[65,1527,1528],{},"adm",[65,1530,1531],{},"syslog",", чтобы ",[65,1534,1074],{}," (от которого работает ",[65,1537,1064],{},") имел доступ.",[33,1540,1541,1542,1572,1574,1575,1577,1578,1580],{},"Исправьте права, если нужно. Например, для лога nginx:\n",[80,1543,1545],{"className":82,"code":1544,"language":84,"meta":85,"style":85},"sudo chown www-data:adm /var/log/nginx/access.log\nsudo chmod 640 /var/log/nginx/access.log\n",[65,1546,1547,1560],{"__ignoreMap":85},[89,1548,1549,1551,1554,1557],{"class":91,"line":92},[89,1550,67],{"class":159},[89,1552,1553],{"class":99}," chown",[89,1555,1556],{"class":99}," www-data:adm",[89,1558,1559],{"class":99}," /var/log/nginx/access.log\n",[89,1561,1562,1564,1567,1570],{"class":91,"line":183},[89,1563,67],{"class":159},[89,1565,1566],{"class":99}," chmod",[89,1568,1569],{"class":95}," 640",[89,1571,1559],{"class":99},[25,1573,689],{}," Не меняйте права на файлы, которые активно пишутся сервисами, без понимания последствий. Лучше всего, если группа ",[65,1576,1528],{}," (или ",[65,1579,1531],{},") имеет на них права на чтение.",[33,1582,1583,1584,1587,1588,1590,1591],{},"Проверьте права на каталог ",[65,1585,1586],{},"/var/log/nginx/",". ",[65,1589,1064],{}," должен иметь право на запись в него для создания архивов:\n",[80,1592,1594],{"className":82,"code":1593,"language":84,"meta":85,"style":85},"sudo chmod 755 /var/log/nginx/\n",[65,1595,1596],{"__ignoreMap":85},[89,1597,1598,1600,1602,1605],{"class":91,"line":92},[89,1599,67],{"class":159},[89,1601,1566],{"class":99},[89,1603,1604],{"class":95}," 755",[89,1606,720],{"class":99},[17,1608,1610],{"id":1609},"способ-3-проверка-конфигурационных-файлов","Способ 3: Проверка конфигурационных файлов",[22,1612,1613,1614,1616],{},"Если тестовый запуск не выявил ошибок ",[65,1615,1503],{},", но ротация не происходит:",[56,1618,1619,1657,1685],{},[33,1620,1621,1622,1654,1655,72],{},"Проверьте синтаксис основного файла конфигурации:\n",[80,1623,1625],{"className":82,"code":1624,"language":84,"meta":85,"style":85},"sudo logrotate -d /etc/logrotate.conf 2>&1 | grep -i \"error\\|syntax\"\n",[65,1626,1627],{"__ignoreMap":85},[89,1628,1629,1631,1633,1635,1638,1642,1645,1648,1651],{"class":91,"line":92},[89,1630,67],{"class":159},[89,1632,522],{"class":99},[89,1634,525],{"class":95},[89,1636,1637],{"class":99}," /etc/logrotate.conf",[89,1639,1641],{"class":1640},"szBVR"," 2>&1",[89,1643,1644],{"class":1640}," |",[89,1646,1647],{"class":159}," grep",[89,1649,1650],{"class":95}," -i",[89,1652,1653],{"class":99}," \"error\\|syntax\"\n","\nИли просто запустите тестовый прогон и найдите ",[65,1656,1473],{},[33,1658,1659,1660,1662,1663],{},"Проверьте файлы в ",[65,1661,145],{},". Убедитесь, что:\n",[30,1664,1665,1672,1675],{},[33,1666,1667,1668,1671],{},"Каждый блок правил (для одного сервиса) ",[25,1669,1670],{},"заканчивается пустой строкой",". Это обязательное требование синтаксиса.",[33,1673,1674],{},"Пути к лог-файлам указаны корректно и существуют.",[33,1676,1677,1678,572,1680,572,1682,1684],{},"Используются правильные директивы (",[65,1679,270],{},[65,1681,1227],{},[65,1683,288],{}," и т.д.).",[33,1686,1687,1688,1691,1692,1753,1754,72],{},"Пример корректного файла в ",[65,1689,1690],{},"/etc/logrotate.d/nginx",":\n",[80,1693,1697],{"className":1694,"code":1695,"language":1696,"meta":85,"style":85},"language-nginx shiki shiki-themes github-light github-dark","/var/log/nginx/*.log {\n    daily\n    missingok\n    rotate 14\n    compress\n    delaycompress\n    notifempty\n    create 640 www-data adm\n    sharedscripts\n    postrotate\n            [ ! -f /var/run/nginx.pid ] || kill -USR1 `cat /var/run/nginx.pid`\n    endscript\n}\n","nginx",[65,1698,1699,1703,1707,1711,1715,1719,1723,1727,1732,1736,1740,1745,1749],{"__ignoreMap":85},[89,1700,1701],{"class":91,"line":92},[89,1702,180],{},[89,1704,1705],{"class":91,"line":183},[89,1706,186],{},[89,1708,1709],{"class":91,"line":189},[89,1710,192],{},[89,1712,1713],{"class":91,"line":195},[89,1714,198],{},[89,1716,1717],{"class":91,"line":201},[89,1718,204],{},[89,1720,1721],{"class":91,"line":207},[89,1722,210],{},[89,1724,1725],{"class":91,"line":213},[89,1726,216],{},[89,1728,1729],{"class":91,"line":219},[89,1730,1731],{},"    create 640 www-data adm\n",[89,1733,1734],{"class":91,"line":225},[89,1735,228],{},[89,1737,1738],{"class":91,"line":231},[89,1739,234],{},[89,1741,1742],{"class":91,"line":237},[89,1743,1744],{},"            [ ! -f /var/run/nginx.pid ] || kill -USR1 `cat /var/run/nginx.pid`\n",[89,1746,1747],{"class":91,"line":243},[89,1748,246],{},[89,1750,1751],{"class":91,"line":249},[89,1752,252],{},"\nОбратите внимание на пустую строку после ",[65,1755,1391],{},[17,1757,1759],{"id":1758},"способ-4-устранение-конфликта-с-процессом","Способ 4: Устранение конфликта с процессом",[22,1761,1762,1763,1765,1766,1769],{},"Если лог-файл используется другим процессом (часто ",[65,1764,1404],{},"), его ротация может завершиться ошибкой ",[65,1767,1768],{},"device or resource busy",". Решения:",[56,1771,1772,1805],{},[33,1773,1774,1780,1781],{},[25,1775,1776,1777],{},"Используйте опцию ",[65,1778,1779],{},"copytruncate",". В конфигурации для проблемного лога добавьте эту директиву. Она копирует файл и сразу обнуляет исходный, не требуя перезапуска сервиса. Минус — возможна потеря записей, сделанных во время копирования.\n",[80,1782,1784],{"className":1694,"code":1783,"language":1696,"meta":85,"style":85},"/var/log/ваш_лог.log {\n    ...\n    copytruncate\n}\n",[65,1785,1786,1791,1796,1801],{"__ignoreMap":85},[89,1787,1788],{"class":91,"line":92},[89,1789,1790],{},"/var/log/ваш_лог.log {\n",[89,1792,1793],{"class":91,"line":183},[89,1794,1795],{},"    ...\n",[89,1797,1798],{"class":91,"line":189},[89,1799,1800],{},"    copytruncate\n",[89,1802,1803],{"class":91,"line":195},[89,1804,252],{},[33,1806,1807,1812,1813,1815,1816,1691,1818],{},[25,1808,1809,1810],{},"Используйте скрипт ",[65,1811,320],{},". Это предпочтительный способ. В скрипте после ротации отправляйте сигнал демону логгера, чтобы он переоткрыл файл. Пример для ",[65,1814,1404],{}," (как в конфиге nginx выше) или ",[65,1817,124],{},[80,1819,1821],{"className":1694,"code":1820,"language":1696,"meta":85,"style":85},"postrotate\n    journalctl --rotate\nendscript\n",[65,1822,1823,1828,1833],{"__ignoreMap":85},[89,1824,1825],{"class":91,"line":92},[89,1826,1827],{},"postrotate\n",[89,1829,1830],{"class":91,"line":183},[89,1831,1832],{},"    journalctl --rotate\n",[89,1834,1835],{"class":91,"line":189},[89,1836,1837],{},"endscript\n",[17,1839,1841,1842],{"id":1840},"способ-5-принудительный-запуск-и-проверка-cron","Способ 5: Принудительный запуск и проверка ",[65,1843,1367],{},[22,1845,1846],{},"Если конфигурация верна, но ротация по расписанию не происходит:",[56,1848,1849,1877],{},[33,1850,1851,1691,1854,1464,1870,1873,1874,1876],{},[25,1852,1853],{},"Запустите вручную с принудительной ротацией",[80,1855,1857],{"className":82,"code":1856,"language":84,"meta":85,"style":85},"sudo logrotate -vf /etc/logrotate.conf\n",[65,1858,1859],{"__ignoreMap":85},[89,1860,1861,1863,1865,1868],{"class":91,"line":92},[89,1862,67],{"class":159},[89,1864,522],{"class":99},[89,1866,1867],{"class":95}," -vf",[89,1869,528],{"class":99},[65,1871,1872],{},"-v"," (verbose) покажет все действия. Флаг ",[65,1875,562],{}," (force) игнорирует условие \"ещё не прошло время для ротации\".",[33,1878,1879,1691,1887],{},[25,1880,1881,1882,1884,1885],{},"Проверьте, что ",[65,1883,1367],{}," запускает ",[65,1886,1064],{},[30,1888,1889,1897,1903],{},[33,1890,1891,1892,1894,1895,293],{},"Задание обычно находится в ",[65,1893,1282],{}," (симлинк на ",[65,1896,654],{},[33,1898,1899,1900,72],{},"Убедитесь, что файл исполняем: ",[65,1901,1902],{},"ls -l /etc/cron.daily/logrotate",[33,1904,1905,1906,1909,1910,1913],{},"Проверьте, работают ли другие задания ",[65,1907,1908],{},"cron.daily",". Можно посмотреть время последнего изменения файлов в ",[65,1911,1912],{},"/var/log/"," — они должны обновляться ежедневно.",[624,1915],{},[17,1917,1919],{"id":1918},"профилактика","Профилактика",[22,1921,1922,1923,1925],{},"Чтобы избежать проблем с ",[65,1924,1064],{}," в будущем:",[56,1927,1928,1938,1946,1957,1974],{},[33,1929,1930,1933,1934,1937],{},[25,1931,1932],{},"Всегда используйте тестовый запуск"," (",[65,1935,1936],{},"logrotate -d",") после внесения изменений в конфигурацию.",[33,1939,1940,1943,1944,72],{},[25,1941,1942],{},"Соблюдайте синтаксис",": пустая строка после каждого блока в ",[65,1945,145],{},[33,1947,1948,1951,1952,1577,1954,1956],{},[25,1949,1950],{},"Правильно настраивайте права",". Убедитесь, что группа ",[65,1953,1528],{},[65,1955,1531],{},") имеет доступ на чтение ко всем лог-файлам, которые ротируются.",[33,1958,1959,1962,1963,1965,1966,1968,1969,1971,1972,293],{},[25,1960,1961],{},"Для сервисов, пишущих в собственные файлы",", в конфиге ",[65,1964,1064],{}," используйте ",[65,1967,1779],{}," или корректный ",[65,1970,320],{},"-скрипт с отправкой сигнала (например, ",[65,1973,891],{},[33,1975,1976,1933,1979,1982,1983,1986],{},[25,1977,1978],{},"Регулярно мониторьте место на диске",[65,1980,1981],{},"df -h",") и размер логов (",[65,1984,1985],{},"du -sh /var/log/*","), чтобы убедиться, что ротация происходит эффективно.",[985,1988,1989],{},"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 .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}",{"title":85,"searchDepth":183,"depth":183,"links":1991},[1992,1993,1994,1995,1996,1997,1998,2000],{"id":1305,"depth":183,"text":1306},{"id":1349,"depth":183,"text":1350},{"id":1435,"depth":183,"text":1436},{"id":1496,"depth":183,"text":1497},{"id":1609,"depth":183,"text":1610},{"id":1758,"depth":183,"text":1759},{"id":1840,"depth":183,"text":1999},"Способ 5: Принудительный запуск и проверка cron",{"id":1918,"depth":183,"text":1919},"N/A","2026-04-08 13:39:14","Полное руководство по устранению ошибок logrotate. Узнайте, почему ротация логов не работает и как быстро это исправить. Пошаговые инструкции для Ubuntu, CentOS и других дистрибутивов.","medium","10-15 мин",[2007,2010,2013,2016],{"question":2008,"answer":2009},"Почему logrotate не ротирует логи, хотя конфиги правильные?","Чаще всего это проблема с правами доступа к лог-файлам или с тем, что демон `cron` не запускает logrotate. Проверьте права на файлы в `/var/log` и задание в `crontab`.",{"question":2011,"answer":2012},"Как протестировать конфигурацию logrotate без переротации?","Используйте флаг `-d` (debug): `sudo logrotate -d /etc/logrotate.conf`. Это покажет, что планируется сделать, но не внесёт изменений.",{"question":2014,"answer":2015},"Что делать, если при ротации возникает 'error: error opening /var/log/syslog: Permission denied'?","Это означает, что процесс logrotate (запущенный от root) не может получить доступ к файлу. Проверьте владельца и права лог-файла командой `ls -l /var/log/syslog` и исправьте: `sudo chown syslog:adm /var/log/syslog`.",{"question":2017,"answer":2018},"Можно ли вручную запустить ротацию для конкретного лога?","Да, используйте `sudo logrotate -f /etc/logrotate.d/ваш-конфиг` или `sudo logrotate -vf /etc/logrotate.conf` для принудительного запуска всей конфигурации в режиме подробного вывода.",[2020,2023,2026,2029,2032],{"name":2021,"text":2022},"Проверьте журнал выполнения logrotate","Посмотрите, есть ли записи об ошибках в системном журнале: `sudo grep -i logrotate /var/log/syslog` (Debian/Ubuntu) или `sudo grep -i logrotate /var/log/messages` (RHEL/CentOS).",{"name":2024,"text":2025},"Запустите диагностический прогон","Выполните тестовый прогон конфигурации без применения изменений: `sudo logrotate -d /etc/logrotate.conf`. В выводе ищите слова 'error' или 'ignoring'.",{"name":2027,"text":2028},"Проверьте права на лог-файлы и каталоги","Убедитесь, что процесс logrotate (от root) имеет права на чтение/запись в целевые лог-файлы и их родительские каталоги. Используйте `ls -ld /var/log/ваш_лог*`.",{"name":2030,"text":2031},"Проверьте синтаксис конфигурационных файлов","Убедитесь, что в файлах в `/etc/logrotate.d/` нет синтаксических ошибок. Проверьте, что каждый блок правил заканчивается пустой строкой.",{"name":2033,"text":2034},"Принудительно выполните ротацию","Если диагностика не помогла, попробуйте принудительный запуск для проблемного лога: `sudo logrotate -vf /etc/logrotate.d/имя_конфига`.","PT15M",[2037,2038,2039,2040,2041,2042,2043,2044,2045,2046],"ошибка logrotate linux","logrotate не работает","ротация логов ошибка","logrotate permission denied","как исправить logrotate","logrotate debug","ошибка ротации логов ubuntu","logrotate config error","syslog rotation error","logrotate force",{},[2049,2050,2051],"/errors/linux/cron-job-failed","/guides/linux/setup-rsyslog-centralized","/errors/linux/disk-space-full","Ошибки Linux",{"title":1295,"description":2003},"errors/linux/logrotate-error","Статья объясняет, что вызывает ошибки в утилите logrotate, и предоставляет проверенные способы их устранения — от проверки прав до конфигурации. Вы научитесь диагностировать и навсегда решить проблемы с ротацией логов.",[2057,1064,1067,1065,2058,1367,84],"ошибки linux","monitoring","Yzs-R2rE8nPoB6FRs7tih5KC8TiK6F-kNXdYYuSd1xE"]