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