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