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