[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"page-ru-/errors/linux/systemd-circular-dependency":3,"mdc-6med31-key":1094,"mdc--w1k6n6-key":1105,"mdc-wydk9m-key":1136,"mdc--wu6src-key":1144,"mdc--llbff7-key":1160,"mdc--6nh6rp-key":1183,"mdc--csl98s-key":1199,"mdc-s4i48-key":1220,"mdc-d9uegq-key":1237,"mdc--pcs5u0-key":1254,"related-/errors/linux/systemd-failed-to-start,/guides/linux/systemd-service-management":1276},{"id":4,"title":5,"appliesTo":6,"author":11,"body":12,"canonical":1021,"code":1022,"createdAt":1023,"description":1024,"difficulty":1025,"draft":1026,"estimatedTime":1027,"extension":1028,"faq":1029,"howToSteps":1042,"howToTotalTime":1061,"image":1021,"keywords":1062,"locale":1073,"meta":1074,"navigation":1075,"path":1076,"platform":1077,"related":1078,"section":1081,"seo":1082,"severity":1083,"stem":1084,"summary":1085,"tags":1086,"twitterCreator":1021,"twitterSite":1021,"type":1092,"updatedAt":1023,"__hash__":1093},"content_ru/errors/linux/systemd-circular-dependency.md","Разрешение циклической зависимости systemd: причины и решения",[7,8,9,10],"systemd v239+","Ubuntu 18.04+","Debian 10+","Fedora 30+","FixPedia Team",{"type":13,"value":14,"toc":1009},"minimark",[15,20,45,48,89,92,96,169,173,178,181,471,474,478,484,556,560,570,679,683,686,841,845,848,931,935,1002,1005],[16,17,19],"h2",{"id":18},"что-означает-ошибка-циклической-зависимости-systemd","Что означает ошибка циклической зависимости systemd",[21,22,23,24,28,29,33,34,33,37,40,41,44],"p",{},"При загрузке systemd строит граф зависимостей между юнитами (службами, таргетами, сокетами и т.д.). ",[25,26,27],"strong",{},"Циклическая зависимость"," возникает, когда два или более юнита указывают друг на друга как на требуемые (через ",[30,31,32],"code",{},"Requires",", ",[30,35,36],{},"Wants",[30,38,39],{},"PartOf"," или ",[30,42,43],{},"After"," в сочетании с другими директивами), образуя замкнутый цикл. Systemd не может определить порядок запуска таких юнитов и прерывает процесс, выводя ошибку.",[21,46,47],{},"Типичные симптомы:",[49,50,51,66,75,82],"ul",{},[52,53,54,55,40,58,61,62,65],"li",{},"В логах (",[30,56,57],{},"journalctl -xe",[30,59,60],{},"systemctl status \u003Cюнит>",") появляется сообщение: ",[30,63,64],{},"Dependency cycle detected: foo.service → bar.service → foo.service",".",[52,67,68,69,40,72,65],{},"Службы, вовлечённые в цикл, переходят в состояние ",[30,70,71],{},"failed",[30,73,74],{},"dead",[52,76,77,78,81],{},"Система может зависнуть на этапе загрузки (например, на ",[30,79,80],{},"Starting...",").",[52,83,84,85,88],{},"Команда ",[30,86,87],{},"systemctl list-dependencies"," для проблемного юнита завершается с ошибкой или покажет зацикленную цепочку.",[21,90,91],{},"Эта ошибка критична: она предотвращает запуск как минимум одной службы, а в худшем случае — всю загрузку системы.",[16,93,95],{"id":94},"причины-возникновения","Причины возникновения",[97,98,99,120,136,157,163],"ol",{},[52,100,101,104,105,108,109,112,113,116,117,65],{},[25,102,103],{},"Неправильно настроенные директивы зависимостей"," в юнит-файлах. Например, ",[30,106,107],{},"serviceA.service"," имеет ",[30,110,111],{},"Requires=serviceB.service",", а ",[30,114,115],{},"serviceB.service"," — ",[30,118,119],{},"Requires=serviceA.service",[52,121,122,125,126,129,130,133,134,65],{},[25,123,124],{},"Цепочка зависимостей через целевые юниты"," (targets). Например, ",[30,127,128],{},"multi-user.target"," зависит от ",[30,131,132],{},"network.target",", который зависит от службы, требующей ",[30,135,128],{},[52,137,138,141,142,144,145,147,148,40,151,144,154,156],{},[25,139,140],{},"Конфликтующие директивы",". Сочетание ",[30,143,32],{},"/",[30,146,36],{}," с ",[30,149,150],{},"Conflicts",[30,152,153],{},"Before",[30,155,43],{}," может создать неявный цикл.",[52,158,159,162],{},[25,160,161],{},"Ошибки в пакетах",". При установке стороннего ПО его юнит-файлы могут содержать циклы, особенно если пакет некорректно объявляет зависимости.",[52,164,165,168],{},[25,166,167],{},"Ручное редактирование"," без проверки. Администратор мог добавить зависимость, не учтя уже существующие связи.",[16,170,172],{"id":171},"способы-решения","Способы решения",[174,175,177],"h3",{"id":176},"способ-1-ручной-анализ-и-исправление-юнит-файлов","Способ 1: Ручной анализ и исправление юнит-файлов",[21,179,180],{},"Этот метод подходит, когда вы знаете примерные имена проблемных юнитов.",[97,182,183,252,328,374,417,437],{},[52,184,185,188,189,211,214,215,217,218,249,251],{},[25,186,187],{},"Определите юниты, участвующие в цикле",". Используйте:",[190,191,196],"pre",{"className":192,"code":193,"language":194,"meta":195,"style":195},"language-bash shiki shiki-themes github-light github-dark","systemd-analyze critical-chain\n","bash","",[30,197,198],{"__ignoreMap":195},[199,200,203,207],"span",{"class":201,"line":202},"line",1,[199,204,206],{"class":205},"sScJk","systemd-analyze",[199,208,210],{"class":209},"sZZnC"," critical-chain\n",[212,213],"br",{},"Команда покажет цепочку загрузки и укажет, где возникает задержка или цикл. Ищите повторяющиеся имена.",[212,216],{},"Или для конкретного юнита:",[190,219,221],{"className":192,"code":220,"language":194,"meta":195,"style":195},"systemctl list-dependencies \u003Cимя_юнита> --all\n",[30,222,223],{"__ignoreMap":195},[199,224,225,228,231,235,238,242,245],{"class":201,"line":202},[199,226,227],{"class":205},"systemctl",[199,229,230],{"class":209}," list-dependencies",[199,232,234],{"class":233},"szBVR"," \u003C",[199,236,237],{"class":209},"имя_юнит",[199,239,241],{"class":240},"sVt8B","а",[199,243,244],{"class":233},">",[199,246,248],{"class":247},"sj4cs"," --all\n",[212,250],{},"Если есть цикл, вывод будет прерываться или содержать одни и те же юниты несколько раз.",[52,253,254,257,258,261,262,300,302,303,321,323,324,327],{},[25,255,256],{},"Визуализируйте граф зависимостей"," (опционально, но полезно). Установите ",[30,259,260],{},"graphviz",":",[190,263,265],{"className":192,"code":264,"language":194,"meta":195,"style":195},"sudo apt install graphviz   # Debian/Ubuntu\nsudo yum install graphviz   # CentOS/RHEL\n",[30,266,267,285],{"__ignoreMap":195},[199,268,269,272,275,278,281],{"class":201,"line":202},[199,270,271],{"class":205},"sudo",[199,273,274],{"class":209}," apt",[199,276,277],{"class":209}," install",[199,279,280],{"class":209}," graphviz",[199,282,284],{"class":283},"sJ8bj","   # Debian/Ubuntu\n",[199,286,288,290,293,295,297],{"class":201,"line":287},2,[199,289,271],{"class":205},[199,291,292],{"class":209}," yum",[199,294,277],{"class":209},[199,296,280],{"class":209},[199,298,299],{"class":283},"   # CentOS/RHEL\n",[212,301],{},"Затем сгенерируйте SVG-файл:",[190,304,306],{"className":192,"code":305,"language":194,"meta":195,"style":195},"systemd-analyze plot > dependencies.svg\n",[30,307,308],{"__ignoreMap":195},[199,309,310,312,315,318],{"class":201,"line":202},[199,311,206],{"class":205},[199,313,314],{"class":209}," plot",[199,316,317],{"class":233}," >",[199,319,320],{"class":209}," dependencies.svg\n",[212,322],{},"Откройте ",[30,325,326],{},"dependencies.svg"," в браузере и найдите цикл (замкнутый контур стрелок).",[52,329,330,333,334,363,365,366,369,370,373],{},[25,331,332],{},"Найдите файлы юнитов",". Для каждого юнита в цикле определите, откуда он загружен:",[190,335,337],{"className":192,"code":336,"language":194,"meta":195,"style":195},"systemctl status \u003Cимя_юнита> | grep Loaded\n",[30,338,339],{"__ignoreMap":195},[199,340,341,343,346,348,350,352,354,357,360],{"class":201,"line":202},[199,342,227],{"class":205},[199,344,345],{"class":209}," status",[199,347,234],{"class":233},[199,349,237],{"class":209},[199,351,241],{"class":240},[199,353,244],{"class":233},[199,355,356],{"class":233}," |",[199,358,359],{"class":205}," grep",[199,361,362],{"class":209}," Loaded\n",[212,364],{},"Вывод покажет путь: ",[30,367,368],{},"/etc/systemd/system/"," (пользовательские переопределения) или ",[30,371,372],{},"/lib/systemd/system/"," (из пакета).",[52,375,376,379,380,383,384,33,387,33,390,33,393,396,397,400,401,112,404,400,406,408,409,411,412,414,415,81],{},[25,377,378],{},"Отредактируйте юнит-файлы",". Откройте каждый файл в редакторе (например, ",[30,381,382],{},"sudo nano /path/to/unit.service","). Найдите директивы ",[30,385,386],{},"Requires=",[30,388,389],{},"Wants=",[30,391,392],{},"After=",[30,394,395],{},"Before=",". Уберите или измените ссылку, которая замыкает цикл. Например, если ",[30,398,399],{},"serviceA"," требует ",[30,402,403],{},"serviceB",[30,405,403],{},[30,407,399],{},", удалите одну из этих зависимостей (часто можно оставить ",[30,410,389],{}," вместо ",[30,413,386],{}," или убрать ",[30,416,392],{},[52,418,419,261,422],{},[25,420,421],{},"Перезагрузите конфигурацию systemd",[190,423,425],{"className":192,"code":424,"language":194,"meta":195,"style":195},"sudo systemctl daemon-reload\n",[30,426,427],{"__ignoreMap":195},[199,428,429,431,434],{"class":201,"line":202},[199,430,271],{"class":205},[199,432,433],{"class":209}," systemctl",[199,435,436],{"class":209}," daemon-reload\n",[52,438,439,261,442,468,470],{},[25,440,441],{},"Проверьте результат",[190,443,445],{"className":192,"code":444,"language":194,"meta":195,"style":195},"systemctl status \u003Cимя_юнита>\nsystemd-analyze critical-chain\n",[30,446,447,462],{"__ignoreMap":195},[199,448,449,451,453,455,457,459],{"class":201,"line":202},[199,450,227],{"class":205},[199,452,345],{"class":209},[199,454,234],{"class":233},[199,456,237],{"class":209},[199,458,241],{"class":240},[199,460,461],{"class":233},">\n",[199,463,464,466],{"class":201,"line":287},[199,465,206],{"class":205},[199,467,210],{"class":209},[212,469],{},"Ошибка должна исчезнуть.",[472,473],"in-article-ad",{},[174,475,477],{"id":476},"способ-2-использование-systemd-analyze-verify-для-автоматической-проверки","Способ 2: Использование systemd-analyze verify для автоматической проверки",[21,479,480,483],{},[30,481,482],{},"systemd-analyze verify"," проверяет синтаксис и логику юнит-файлов, включая циклы.",[97,485,486,523,544,550],{},[52,487,488,261,491,512,514,515,518,519,522],{},[25,489,490],{},"Запустите проверку для всех юнитов",[190,492,494],{"className":192,"code":493,"language":194,"meta":195,"style":195},"sudo systemd-analyze verify --fail --no-pager\n",[30,495,496],{"__ignoreMap":195},[199,497,498,500,503,506,509],{"class":201,"line":202},[199,499,271],{"class":205},[199,501,502],{"class":209}," systemd-analyze",[199,504,505],{"class":209}," verify",[199,507,508],{"class":247}," --fail",[199,510,511],{"class":247}," --no-pager\n",[212,513],{},"Флаг ",[30,516,517],{},"--fail"," заставит команду выходить с ненулевым кодом при ошибках, а ",[30,520,521],{},"--no-pager"," отключит постраничный вывод. В выводе будут указаны файлы и строки с проблемами, включая циклические зависимости.",[52,524,525,261,528],{},[25,526,527],{},"Если вывод слишком длинный, проверяйте по одному юниту",[190,529,531],{"className":192,"code":530,"language":194,"meta":195,"style":195},"sudo systemd-analyze verify /etc/systemd/system/foo.service\n",[30,532,533],{"__ignoreMap":195},[199,534,535,537,539,541],{"class":201,"line":202},[199,536,271],{"class":205},[199,538,502],{"class":209},[199,540,505],{"class":209},[199,542,543],{"class":209}," /etc/systemd/system/foo.service\n",[52,545,546,549],{},[25,547,548],{},"Исправьте указанные файлы"," как в Способе 1.",[52,551,552,555],{},[25,553,554],{},"Перезагрузите демон"," и проверьте.",[174,557,559],{"id":558},"способ-3-временное-отключение-проблемных-юнитов-mask","Способ 3: Временное отключение проблемных юнитов (mask)",[21,561,562,563,566,567,65],{},"Если цикл предотвращает загрузку системы (например, вы не можете получить доступ к shell), загрузитесь в ",[25,564,565],{},"recovery mode"," или используйте ",[25,568,569],{},"live-USB",[97,571,572,585,619,625],{},[52,573,574,577,578,580,581,584],{},[25,575,576],{},"Определите цикл"," через ",[30,579,206],{}," из recovery-режима или, если система частично загружена, через ",[30,582,583],{},"journalctl -b -1"," (логи предыдущей загрузки).",[52,586,587,261,590,612,614,615,618],{},[25,588,589],{},"Временно заблокируйте (mask) один из юнитов в цикле",[190,591,593],{"className":192,"code":592,"language":194,"meta":195,"style":195},"sudo systemctl mask \u003Cимя_юнита>\n",[30,594,595],{"__ignoreMap":195},[199,596,597,599,601,604,606,608,610],{"class":201,"line":202},[199,598,271],{"class":205},[199,600,433],{"class":209},[199,602,603],{"class":209}," mask",[199,605,234],{"class":233},[199,607,237],{"class":209},[199,609,241],{"class":240},[199,611,461],{"class":233},[212,613],{},"Это создаст символическую ссылку на ",[30,616,617],{},"/dev/null",", предотвратив загрузку юнита.",[52,620,621,624],{},[25,622,623],{},"Перезагрузите систему",". Она должна загрузиться без ошибки (хотя функциональность, связанная с заблокированным юнитом, будет недоступна).",[52,626,627,630,631],{},[25,628,629],{},"После загрузки исправьте юнит-файлы"," (Способ 1), затем разблокируйте:",[190,632,634],{"className":192,"code":633,"language":194,"meta":195,"style":195},"sudo systemctl unmask \u003Cимя_юнита>\nsudo systemctl daemon-reload\nsudo systemctl restart \u003Cимя_юнита>\n",[30,635,636,653,661],{"__ignoreMap":195},[199,637,638,640,642,645,647,649,651],{"class":201,"line":202},[199,639,271],{"class":205},[199,641,433],{"class":209},[199,643,644],{"class":209}," unmask",[199,646,234],{"class":233},[199,648,237],{"class":209},[199,650,241],{"class":240},[199,652,461],{"class":233},[199,654,655,657,659],{"class":201,"line":287},[199,656,271],{"class":205},[199,658,433],{"class":209},[199,660,436],{"class":209},[199,662,664,666,668,671,673,675,677],{"class":201,"line":663},3,[199,665,271],{"class":205},[199,667,433],{"class":209},[199,669,670],{"class":209}," restart",[199,672,234],{"class":233},[199,674,237],{"class":209},[199,676,241],{"class":240},[199,678,461],{"class":233},[174,680,682],{"id":681},"способ-4-обновление-или-переустановка-пакета","Способ 4: Обновление или переустановка пакета",[21,684,685],{},"Если цикл вызван пакетом из репозитория (например, после обновления):",[97,687,688,724,783,836],{},[52,689,690,261,693],{},[25,691,692],{},"Найдите пакет, которому принадлежит юнит",[190,694,696],{"className":192,"code":695,"language":194,"meta":195,"style":195},"dpkg -S /lib/systemd/system/foo.service   # Debian/Ubuntu\nrpm -qf /usr/lib/systemd/system/foo.service   # CentOS/RHEL\n",[30,697,698,711],{"__ignoreMap":195},[199,699,700,703,706,709],{"class":201,"line":202},[199,701,702],{"class":205},"dpkg",[199,704,705],{"class":247}," -S",[199,707,708],{"class":209}," /lib/systemd/system/foo.service",[199,710,284],{"class":283},[199,712,713,716,719,722],{"class":201,"line":287},[199,714,715],{"class":205},"rpm",[199,717,718],{"class":247}," -qf",[199,720,721],{"class":209}," /usr/lib/systemd/system/foo.service",[199,723,299],{"class":283},[52,725,726,729,730],{},[25,727,728],{},"Обновите пакет"," до последней версии — ошибка могла быть исправлена в новом релизе:",[190,731,733],{"className":192,"code":732,"language":194,"meta":195,"style":195},"sudo apt update && sudo apt upgrade \u003Cимя_пакета>   # Debian/Ubuntu\nsudo yum update \u003Cимя_пакета>   # CentOS/RHEL\n",[30,734,735,765],{"__ignoreMap":195},[199,736,737,739,741,744,747,749,751,754,756,759,761,763],{"class":201,"line":202},[199,738,271],{"class":205},[199,740,274],{"class":209},[199,742,743],{"class":209}," update",[199,745,746],{"class":240}," && ",[199,748,271],{"class":205},[199,750,274],{"class":209},[199,752,753],{"class":209}," upgrade",[199,755,234],{"class":233},[199,757,758],{"class":209},"имя_пакет",[199,760,241],{"class":240},[199,762,244],{"class":233},[199,764,284],{"class":283},[199,766,767,769,771,773,775,777,779,781],{"class":201,"line":287},[199,768,271],{"class":205},[199,770,292],{"class":209},[199,772,743],{"class":209},[199,774,234],{"class":233},[199,776,758],{"class":209},[199,778,241],{"class":240},[199,780,244],{"class":233},[199,782,299],{"class":283},[52,784,785,261,788,833,835],{},[25,786,787],{},"Если обновление не помогло, переустановите пакет",[190,789,791],{"className":192,"code":790,"language":194,"meta":195,"style":195},"sudo apt install --reinstall \u003Cимя_пакета>   # Debian/Ubuntu\nsudo yum reinstall \u003Cимя_пакета>   # CentOS/RHEL\n",[30,792,793,814],{"__ignoreMap":195},[199,794,795,797,799,801,804,806,808,810,812],{"class":201,"line":202},[199,796,271],{"class":205},[199,798,274],{"class":209},[199,800,277],{"class":209},[199,802,803],{"class":247}," --reinstall",[199,805,234],{"class":233},[199,807,758],{"class":209},[199,809,241],{"class":240},[199,811,244],{"class":233},[199,813,284],{"class":283},[199,815,816,818,820,823,825,827,829,831],{"class":201,"line":287},[199,817,271],{"class":205},[199,819,292],{"class":209},[199,821,822],{"class":209}," reinstall",[199,824,234],{"class":233},[199,826,758],{"class":209},[199,828,241],{"class":240},[199,830,244],{"class":233},[199,832,299],{"class":283},[212,834],{},"Переустановка заменит юнит-файлы на стандартные, возможно, без цикла.",[52,837,838,555],{},[25,839,840],{},"Перезагрузите systemd",[174,842,844],{"id":843},"способ-5-использование-systemd-analyze-dump-для-глубокого-анализа","Способ 5: Использование systemd-analyze dump для глубокого анализа",[21,846,847],{},"Если предыдущие методы не дали результата, получите полный дамп состояния systemd:",[97,849,850,874,887,925],{},[52,851,852,261,855],{},[25,853,854],{},"Создайте дамп",[190,856,858],{"className":192,"code":857,"language":194,"meta":195,"style":195},"sudo systemd-analyze dump > systemd-dump.txt\n",[30,859,860],{"__ignoreMap":195},[199,861,862,864,866,869,871],{"class":201,"line":202},[199,863,271],{"class":205},[199,865,502],{"class":209},[199,867,868],{"class":209}," dump",[199,870,317],{"class":233},[199,872,873],{"class":209}," systemd-dump.txt\n",[52,875,876,879,880,33,882,33,884,886],{},[25,877,878],{},"Ищите циклы вручную",". Откройте файл и найдите все вхождения ",[30,881,386],{},[30,883,389],{},[30,885,392],{}," для подозреваемых юнитов. Постройте цепочку на бумаге или в графическом редакторе.",[52,888,889,892,893,896,897,900,901,108,903,112,906,908,909,911,912,914,915,918,919,921,922,924],{},[25,890,891],{},"Особое внимание на \"want\" и \"require\" цепочки",". Часто цикл образуется через ",[30,894,895],{},"WantedBy="," в секциях ",[30,898,899],{},"[Install]",". Например, ",[30,902,399],{},[30,904,905],{},"WantedBy=multi-user.target",[30,907,403],{}," (который зависит от ",[30,910,399],{},") также имеет ",[30,913,905],{}," и при этом ",[30,916,917],{},"Requires=serviceA",". Это не всегда цикл, но если ",[30,920,399],{}," также требует ",[30,923,403],{}," — цикл возникнет.",[52,926,927,930],{},[25,928,929],{},"Исправьте файлы"," и перезагрузите демон.",[16,932,934],{"id":933},"профилактика","Профилактика",[49,936,937,946,958,968,981,990,996],{},[52,938,939,942,943,65],{},[25,940,941],{},"Тестируйте юнит-файлы перед установкой",". Используйте ",[30,944,945],{},"systemd-analyze verify \u003Cфайл>",[52,947,948,953,954,957],{},[25,949,950,951],{},"Избегайте взаимных ",[30,952,386],{},". Если службе A нужна служба B, достаточно ",[30,955,956],{},"Requires=B"," в A. Не добавляйте обратную зависимость в B, если это не абсолютно необходимо.",[52,959,960,967],{},[25,961,962,963,411,965],{},"Используйте ",[30,964,389],{},[30,966,386],{},", если зависимость не критична. Это снизит риск цикла.",[52,969,970,973,974,977,978,980],{},[25,971,972],{},"Группируйте службы через таргеты",". Создайте целевой юнит (например, ",[30,975,976],{},"myapp.target",") и добавляйте в него службы через ",[30,979,895],{},". Затем включайте только таргет.",[52,982,983,986,987,65],{},[25,984,985],{},"Регулярно проверяйте зависимости"," после изменений: ",[30,988,989],{},"systemctl list-dependencies \u003Cключевой_юнит>",[52,991,992,995],{},[25,993,994],{},"При обновлении пакетов"," внимательно читайте changelog — там могут быть изменения в зависимостях.",[52,997,998,1001],{},[25,999,1000],{},"Держите systemd обновлённым",". В новых версиях улучшена обработка зависимостей и добавлены предупреждения.",[21,1003,1004],{},"Эта статья должна помочь вам быстро диагностировать и устранить циклические зависимости в systemd, восстановив работу служб и системы.",[1006,1007,1008],"style",{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .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 .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}",{"title":195,"searchDepth":287,"depth":287,"links":1010},[1011,1012,1013,1020],{"id":18,"depth":287,"text":19},{"id":94,"depth":287,"text":95},{"id":171,"depth":287,"text":172,"children":1014},[1015,1016,1017,1018,1019],{"id":176,"depth":663,"text":177},{"id":476,"depth":663,"text":477},{"id":558,"depth":663,"text":559},{"id":681,"depth":663,"text":682},{"id":843,"depth":663,"text":844},{"id":933,"depth":287,"text":934},null,"DEPCYCL","2026-02-16 13:52:26","Циклическая зависимость systemd мешает запуску служб? Узнайте, как обнаружить и исправить ошибку Dependency cycle detected. Пошаговая инструкция с примерами команд. Решения для Ubuntu, CentOS, Debian.","medium",false,"15-30 мин","md",[1030,1033,1036,1039],{"answer":1031,"question":1032},"Циклическая зависимость возникает, когда два или более юнита (служб, таргетов) зависят друг от друга напрямую или через цепочку, создавая бесконечный цикл. Systemd не может определить порядок запуска и прерывает загрузку.","Что такое циклическая зависимость в systemd?",{"answer":1034,"question":1035},"Используйте команду `systemd-analyze critical-chain` или `systemctl list-dependencies \u003Cюнит>`. Для визуализации подключите graphviz: `systemd-analyze plot > graph.svg`.","Как обнаружить циклическую зависимость?",{"answer":1037,"question":1038},"Нет, автоматического исправления нет. Нужно вручную проанализировать юнит-файлы и изменить директивы зависимостей (After, Requires, Wants), устранив цикл.","Можно ли автоматически исправить циклическую зависимость?",{"answer":1040,"question":1041},"Соблюдайте принцип односторонних зависимостей, тестируйте с `systemd-analyze verify`, избегайте сложных цепочек. Используйте целевые юниты (targets) для группировки, а не создавайте взаимные зависимости.","Как предотвратить циклические зависимости при создании юнит-файлов?",[1043,1046,1049,1052,1055,1058],{"name":1044,"text":1045},"Анализ зависимостей","Запустите `systemd-analyze critical-chain` или `systemctl list-dependencies \u003Cимя_юнита>`, чтобы увидеть полную цепочку зависимостей и найти цикл.",{"name":1047,"text":1048},"Визуализация графа","Установите graphviz и выполните `systemd-analyze plot > graph.svg`, чтобы получить схему зависимостей в графическом виде. Откройте SVG-файл и найдите цикл.",{"name":1050,"text":1051},"Поиск проблемных юнит-файлов","Найдите юниты, участвующие в цикле, с помощью выводов предыдущих команд. Обычно это файлы в `/etc/systemd/system/` или `/lib/systemd/system/`.",{"name":1053,"text":1054},"Редактирование юнит-файлов","Откройте проблемные юнит-файлы (например, `sudo nano /etc/systemd/system/foo.service`) и измените директивы зависимостей (After, Requires, Wants), устранив взаимные ссылки.",{"name":1056,"text":1057},"Перезагрузка демона systemd","После изменений выполните `sudo systemctl daemon-reload`, чтобы systemd перечитал конфигурации.",{"name":1059,"text":1060},"Проверка и запуск","Запустите `sudo systemctl restart \u003Cюнит>` или перезагрузите систему. Убедитесь, что ошибка исчезла, проверив `systemctl status \u003Cюнит>`.","PT30M",[1063,1064,1065,1066,1067,1068,1069,1070,1071,1072],"циклическая зависимость systemd","systemd dependency cycle","ошибка circular dependency","как исправить зацикливание systemd","systemd не запускается из-за цикла","разрешить циклическую зависимость юнитов","systemd circular dependency error","systemd unit dependency loop","дедлок systemd","systemd deadlock","ru_RU",{},true,"/errors/linux/systemd-circular-dependency","linux",[1079,1080],"/errors/linux/systemd-failed-to-start","/guides/linux/systemd-service-management","Ошибки systemd",{"title":5,"description":1024},"critical","errors/linux/systemd-circular-dependency","Статья объясняет, что такое циклическая зависимость в systemd, почему она возникает и как её исправить. Вы узнаете, как анализировать зависимости юнитов и вносить правки для восстановления работы системы.",[1087,1088,1089,1090,1091],"systemd","linux-errors","циклическая-зависимость","unit-files","dependency-cycle","error","Jt9FHp6ZAqCAhnIOFWHU1Q9yr3ljfwE2_Doqt_3grMk",{"data":1095,"body":1096},{},{"type":1097,"children":1098},"root",[1099],{"type":1100,"tag":21,"props":1101,"children":1102},"element",{},[1103],{"type":1104,"value":1031},"text",{"data":1106,"body":1107},{},{"type":1097,"children":1108},[1109],{"type":1100,"tag":21,"props":1110,"children":1111},{},[1112,1114,1120,1121,1127,1129,1135],{"type":1104,"value":1113},"Используйте команду ",{"type":1100,"tag":30,"props":1115,"children":1117},{"className":1116},[],[1118],{"type":1104,"value":1119},"systemd-analyze critical-chain",{"type":1104,"value":40},{"type":1100,"tag":30,"props":1122,"children":1124},{"className":1123},[],[1125],{"type":1104,"value":1126},"systemctl list-dependencies \u003Cюнит>",{"type":1104,"value":1128},". Для визуализации подключите graphviz: ",{"type":1100,"tag":30,"props":1130,"children":1132},{"className":1131},[],[1133],{"type":1104,"value":1134},"systemd-analyze plot > graph.svg",{"type":1104,"value":65},{"data":1137,"body":1138},{},{"type":1097,"children":1139},[1140],{"type":1100,"tag":21,"props":1141,"children":1142},{},[1143],{"type":1104,"value":1037},{"data":1145,"body":1146},{},{"type":1097,"children":1147},[1148],{"type":1100,"tag":21,"props":1149,"children":1150},{},[1151,1153,1158],{"type":1104,"value":1152},"Соблюдайте принцип односторонних зависимостей, тестируйте с ",{"type":1100,"tag":30,"props":1154,"children":1156},{"className":1155},[],[1157],{"type":1104,"value":482},{"type":1104,"value":1159},", избегайте сложных цепочек. Используйте целевые юниты (targets) для группировки, а не создавайте взаимные зависимости.",{"data":1161,"body":1162},{},{"type":1097,"children":1163},[1164],{"type":1100,"tag":21,"props":1165,"children":1166},{},[1167,1169,1174,1175,1181],{"type":1104,"value":1168},"Запустите ",{"type":1100,"tag":30,"props":1170,"children":1172},{"className":1171},[],[1173],{"type":1104,"value":1119},{"type":1104,"value":40},{"type":1100,"tag":30,"props":1176,"children":1178},{"className":1177},[],[1179],{"type":1104,"value":1180},"systemctl list-dependencies \u003Cимя_юнита>",{"type":1104,"value":1182},", чтобы увидеть полную цепочку зависимостей и найти цикл.",{"data":1184,"body":1185},{},{"type":1097,"children":1186},[1187],{"type":1100,"tag":21,"props":1188,"children":1189},{},[1190,1192,1197],{"type":1104,"value":1191},"Установите graphviz и выполните ",{"type":1100,"tag":30,"props":1193,"children":1195},{"className":1194},[],[1196],{"type":1104,"value":1134},{"type":1104,"value":1198},", чтобы получить схему зависимостей в графическом виде. Откройте SVG-файл и найдите цикл.",{"data":1200,"body":1201},{},{"type":1097,"children":1202},[1203],{"type":1100,"tag":21,"props":1204,"children":1205},{},[1206,1208,1213,1214,1219],{"type":1104,"value":1207},"Найдите юниты, участвующие в цикле, с помощью выводов предыдущих команд. Обычно это файлы в ",{"type":1100,"tag":30,"props":1209,"children":1211},{"className":1210},[],[1212],{"type":1104,"value":368},{"type":1104,"value":40},{"type":1100,"tag":30,"props":1215,"children":1217},{"className":1216},[],[1218],{"type":1104,"value":372},{"type":1104,"value":65},{"data":1221,"body":1222},{},{"type":1097,"children":1223},[1224],{"type":1100,"tag":21,"props":1225,"children":1226},{},[1227,1229,1235],{"type":1104,"value":1228},"Откройте проблемные юнит-файлы (например, ",{"type":1100,"tag":30,"props":1230,"children":1232},{"className":1231},[],[1233],{"type":1104,"value":1234},"sudo nano /etc/systemd/system/foo.service",{"type":1104,"value":1236},") и измените директивы зависимостей (After, Requires, Wants), устранив взаимные ссылки.",{"data":1238,"body":1239},{},{"type":1097,"children":1240},[1241],{"type":1100,"tag":21,"props":1242,"children":1243},{},[1244,1246,1252],{"type":1104,"value":1245},"После изменений выполните ",{"type":1100,"tag":30,"props":1247,"children":1249},{"className":1248},[],[1250],{"type":1104,"value":1251},"sudo systemctl daemon-reload",{"type":1104,"value":1253},", чтобы systemd перечитал конфигурации.",{"data":1255,"body":1256},{},{"type":1097,"children":1257},[1258],{"type":1100,"tag":21,"props":1259,"children":1260},{},[1261,1262,1268,1270,1275],{"type":1104,"value":1168},{"type":1100,"tag":30,"props":1263,"children":1265},{"className":1264},[],[1266],{"type":1104,"value":1267},"sudo systemctl restart \u003Cюнит>",{"type":1104,"value":1269}," или перезагрузите систему. Убедитесь, что ошибка исчезла, проверив ",{"type":1100,"tag":30,"props":1271,"children":1273},{"className":1272},[],[1274],{"type":1104,"value":60},{"type":1104,"value":65},[1277,2204],{"id":1278,"title":1279,"appliesTo":1280,"author":11,"body":1286,"canonical":1021,"code":2143,"createdAt":2144,"description":2145,"difficulty":1025,"draft":1026,"estimatedTime":2146,"extension":1028,"faq":2147,"howToSteps":2160,"howToTotalTime":2179,"image":1021,"keywords":2180,"locale":1073,"meta":2189,"navigation":1075,"path":1079,"platform":1077,"related":2190,"section":2193,"seo":2194,"severity":2195,"stem":2196,"summary":2197,"tags":2198,"twitterCreator":1021,"twitterSite":1021,"type":1092,"updatedAt":2144,"__hash__":2203},"content_ru/errors/linux/systemd-failed-to-start.md","systemd-failed-to-start: причины и методы исправления ошибки запуска",[1281,1282,1283,1284,1285],"systemd 245+","Ubuntu 20.04+","Debian 11+","CentOS 8+","Fedora 35+",{"type":13,"value":1287,"toc":2127},[1288,1295,1306,1313,1328,1330,1333,1408,1410,1417,1420,1499,1517,1521,1524,1641,1645,1750,1754,1757,1843,1845,1911,1913,1917,1920,2043,2047,2050,2124],[16,1289,1291,1292],{"id":1290},"что-означает-ошибка-systemd-failed-to-start","Что означает ошибка ",[30,1293,1294],{},"systemd-failed-to-start",[21,1296,1297,1298,1301,1302,1305],{},"Ошибка ",[25,1299,1300],{},"Failed to start"," — это общий статус, который systemd присваивает службе (юниту), когда процесс её запуска завершился с ненулевым кодом возврата, превысил заданный таймаут или столкнулся с критической проблемой при инициализации. В выводе команды ",[30,1303,1304],{},"systemctl status"," она выглядит как:",[190,1307,1311],{"className":1308,"code":1310,"language":1104},[1309],"language-text","● 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",[30,1312,1310],{"__ignoreMap":195},[21,1314,1315,1316,1319,1320,1323,1324,1327],{},"Ключевые флаги: ",[30,1317,1318],{},"Active: failed"," и ",[30,1321,1322],{},"Result: exit-code"," (или ",[30,1325,1326],{},"timeout","). Эта ошибка блокирует работу сервиса и может помешать загрузке системы, если юнит критичен.",[16,1329,95],{"id":94},[21,1331,1332],{},"Причины носят конкретный технический характер:",[97,1334,1335,1359,1372,1378,1389,1398],{},[52,1336,1337,1340,1341,1344,1345,1348,1349,33,1352,1355,1356,1358],{},[25,1338,1339],{},"Некорректный конфигурационный файл юнита"," (",[30,1342,1343],{},".service","). Ошибки в секциях ",[30,1346,1347],{},"[Service]"," (неверный путь в ",[30,1350,1351],{},"ExecStart",[30,1353,1354],{},"ExecStartPre","), ",[30,1357,899],{}," или синтаксис.",[52,1360,1361,1364,1365,1368,1369,81],{},[25,1362,1363],{},"Недостаток прав доступа",". Служба пытается прочитать/записать в каталог, к которому у неё нет прав (например, ",[30,1366,1367],{},"/var/log/app/","), или запускается от неправильного пользователя (",[30,1370,1371],{},"User=",[52,1373,1374,1377],{},[25,1375,1376],{},"Конфликт ресурсов",". Порт уже занят другим процессом, недостаточно памяти (OOM Killer), не хватает дескрипторов файлов.",[52,1379,1380,1383,1384,40,1386,1388],{},[25,1381,1382],{},"Зависимости не выполнены",". Указанные в ",[30,1385,386],{},[30,1387,392],{}," службы не запустились или завершились с ошибкой.",[52,1390,1391,1394,1395,1397],{},[25,1392,1393],{},"Повреждение бинарного файла или зависимостей приложения",". Файл, указанный в ",[30,1396,1351],{},", отсутствует, неисправен или не может загрузить нужные библиотеки.",[52,1399,1400,1403,1404,1407],{},[25,1401,1402],{},"Превышение таймаута",". Приложение долго не отвечает на запросы инициализации, и systemd убивает его по истечении ",[30,1405,1406],{},"TimeoutStartSec="," (по умолчанию 90 сек).",[16,1409,172],{"id":171},[174,1411,1413,1414],{"id":1412},"способ-1-анализ-логов-службы-через-journalctl","Способ 1: Анализ логов службы через ",[30,1415,1416],{},"journalctl",[21,1418,1419],{},"Это первый и самый важный шаг. Логи systemd содержат детальный вывод программы.",[97,1421,1422,1428,1455,1473],{},[52,1423,1424,1425,81],{},"Узнайте точное имя службы (например, ",[30,1426,1427],{},"nginx.service",[52,1429,1430,1431,1434,1435],{},"Выполните команду для просмотра логов ",[25,1432,1433],{},"за текущую загрузку",":\n",[190,1436,1438],{"className":192,"code":1437,"language":194,"meta":195,"style":195},"journalctl -u nginx.service -b --no-pager\n",[30,1439,1440],{"__ignoreMap":195},[199,1441,1442,1444,1447,1450,1453],{"class":201,"line":202},[199,1443,1416],{"class":205},[199,1445,1446],{"class":247}," -u",[199,1448,1449],{"class":209}," nginx.service",[199,1451,1452],{"class":247}," -b",[199,1454,511],{"class":247},[52,1456,1457,1458,33,1461,33,1464,33,1467,33,1470,65],{},"Внимательно изучите последние 20-30 строк. Ищите слова ",[25,1459,1460],{},"Failed",[25,1462,1463],{},"Error",[25,1465,1466],{},"(code=exited, status=...)",[25,1468,1469],{},"Permission denied",[25,1471,1472],{},"No such file or directory",[52,1474,1475,1476],{},"Если лог обширный, фильтруйте по уровню ошибки:\n",[190,1477,1479],{"className":192,"code":1478,"language":194,"meta":195,"style":195},"journalctl -u nginx.service -b -p err --no-pager\n",[30,1480,1481],{"__ignoreMap":195},[199,1482,1483,1485,1487,1489,1491,1494,1497],{"class":201,"line":202},[199,1484,1416],{"class":205},[199,1486,1446],{"class":247},[199,1488,1449],{"class":209},[199,1490,1452],{"class":247},[199,1492,1493],{"class":247}," -p",[199,1495,1496],{"class":209}," err",[199,1498,511],{"class":247},[1500,1501,1502],"blockquote",{},[21,1503,1504,1505,1508,1509,1512,1513,1516],{},"💡 ",[25,1506,1507],{},"Совет",": Добавьте флаг ",[30,1510,1511],{},"-e"," для открытия лога сразу в конце, или ",[30,1514,1515],{},"-f"," для отслеживания в реальном времени при перезапуске службы.",[174,1518,1520],{"id":1519},"способ-2-проверка-и-исправление-конфигурационного-файла","Способ 2: Проверка и исправление конфигурационного файла",[21,1522,1523],{},"Ошибки в юнит-файле — частая причина.",[97,1525,1526,1553,1573,1626],{},[52,1527,1528,1529],{},"Найдите файл службы:\n",[190,1530,1532],{"className":192,"code":1531,"language":194,"meta":195,"style":195},"systemctl status nginx.service | grep Loaded\n# Вывод: Loaded: loaded (/etc/systemd/system/nginx.service; enabled; ...)\n",[30,1533,1534,1548],{"__ignoreMap":195},[199,1535,1536,1538,1540,1542,1544,1546],{"class":201,"line":202},[199,1537,227],{"class":205},[199,1539,345],{"class":209},[199,1541,1449],{"class":209},[199,1543,356],{"class":233},[199,1545,359],{"class":205},[199,1547,362],{"class":209},[199,1549,1550],{"class":201,"line":287},[199,1551,1552],{"class":283},"# Вывод: Loaded: loaded (/etc/systemd/system/nginx.service; enabled; ...)\n",[52,1554,1555,1556,1572],{},"Проверьте синтаксис:\n",[190,1557,1559],{"className":192,"code":1558,"language":194,"meta":195,"style":195},"sudo systemd-analyze verify /etc/systemd/system/nginx.service\n",[30,1560,1561],{"__ignoreMap":195},[199,1562,1563,1565,1567,1569],{"class":201,"line":202},[199,1564,271],{"class":205},[199,1566,502],{"class":209},[199,1568,505],{"class":209},[199,1570,1571],{"class":209}," /etc/systemd/system/nginx.service\n","\nКоманда покажет строку с ошибкой, если она есть (например, \"Invalid command 'Execstar', not part of a unit configuration\").",[52,1574,1575,1576,1579,1580],{},"Откройте файл в редакторе (",[30,1577,1578],{},"sudo nano /etc/systemd/system/nginx.service",") и проверьте:\n",[49,1581,1582,1597,1607,1619],{},[52,1583,1584,1585,33,1587,1589,1590,40,1593,1596],{},"Пути в ",[30,1586,1351],{},[30,1588,1354],{},": существуют ли они? (",[30,1591,1592],{},"which some-binary",[30,1594,1595],{},"ls -la /path/to/file",")",[52,1598,1599,1600,1603,1604,81],{},"Права на исполняемый файл (",[30,1601,1602],{},"ls -l /usr/bin/some-binary"," — должен быть ",[30,1605,1606],{},"-rwxr-xr-x",[52,1608,1609,1610,1612,1613,1319,1615,1618],{},"Секцию ",[30,1611,1347],{},": правильно ли указаны ",[30,1614,1371],{},[30,1616,1617],{},"Group=","? Существует ли такой пользователь/группа?",[52,1620,1621,1622,1625],{},"Директиву ",[30,1623,1624],{},"WorkingDirectory=",": существует ли каталог?",[52,1627,1628,1629],{},"После исправлений выполните:\n",[190,1630,1631],{"className":192,"code":424,"language":194,"meta":195,"style":195},[30,1632,1633],{"__ignoreMap":195},[199,1634,1635,1637,1639],{"class":201,"line":202},[199,1636,271],{"class":205},[199,1638,433],{"class":209},[199,1640,436],{"class":209},[174,1642,1644],{"id":1643},"способ-3-проверка-зависимостей-и-конфликтов-портовресурсов","Способ 3: Проверка зависимостей и конфликтов портов/ресурсов",[97,1646,1647,1679,1704],{},[52,1648,1649,1652,1653,1678],{},[25,1650,1651],{},"Проверьте, не занят ли порт"," (если служба сетевая):\n",[190,1654,1656],{"className":192,"code":1655,"language":194,"meta":195,"style":195},"sudo ss -tulpn | grep :80  # Замените 80 на порт вашей службы\n",[30,1657,1658],{"__ignoreMap":195},[199,1659,1660,1662,1665,1668,1670,1672,1675],{"class":201,"line":202},[199,1661,271],{"class":205},[199,1663,1664],{"class":209}," ss",[199,1666,1667],{"class":247}," -tulpn",[199,1669,356],{"class":233},[199,1671,359],{"class":205},[199,1673,1674],{"class":209}," :80",[199,1676,1677],{"class":283},"  # Замените 80 на порт вашей службы\n","\nЕсли порт занят другим процессом, найдите и остановите его или измените порт в конфиге службы.",[52,1680,1681,1434,1684,1700,1701,65],{},[25,1682,1683],{},"Проверьте, все ли требуемые службы работают",[190,1685,1687],{"className":192,"code":1686,"language":194,"meta":195,"style":195},"systemctl list-dependencies nginx.service --reverse\n",[30,1688,1689],{"__ignoreMap":195},[199,1690,1691,1693,1695,1697],{"class":201,"line":202},[199,1692,227],{"class":205},[199,1694,230],{"class":209},[199,1696,1449],{"class":209},[199,1698,1699],{"class":247}," --reverse\n","\nЭто покажет, какие службы зависят от nginx. Убедитесь, что они в состоянии ",[30,1702,1703],{},"active (running)",[52,1705,1706,1434,1709,1749],{},[25,1707,1708],{},"Проверьте наличие свободных ресурсов",[190,1710,1712],{"className":192,"code":1711,"language":194,"meta":195,"style":195},"free -h        # Память\ndf -h /var     # Дисковое пространство (особенно для логов)\nulimit -n      # Лимит дескрипторов файлов (может быть мал)\n",[30,1713,1714,1725,1738],{"__ignoreMap":195},[199,1715,1716,1719,1722],{"class":201,"line":202},[199,1717,1718],{"class":205},"free",[199,1720,1721],{"class":247}," -h",[199,1723,1724],{"class":283},"        # Память\n",[199,1726,1727,1730,1732,1735],{"class":201,"line":287},[199,1728,1729],{"class":205},"df",[199,1731,1721],{"class":247},[199,1733,1734],{"class":209}," /var",[199,1736,1737],{"class":283},"     # Дисковое пространство (особенно для логов)\n",[199,1739,1740,1743,1746],{"class":201,"line":663},[199,1741,1742],{"class":247},"ulimit",[199,1744,1745],{"class":247}," -n",[199,1747,1748],{"class":283},"      # Лимит дескрипторов файлов (может быть мал)\n","\nНедостаток любого ресурса может привести к падению службы при старте.",[174,1751,1753],{"id":1752},"способ-4-восстановление-из-пакета-или-ручная-переустановка","Способ 4: Восстановление из пакета или ручная переустановка",[21,1755,1756],{},"Если служба установлена из пакетного менеджера (apt, dnf, yum), её конфигурация могла быть повреждена.",[97,1758,1759,1802,1824],{},[52,1760,1761,1434,1764,1794,1795,1798,1799,65],{},[25,1762,1763],{},"Debian/Ubuntu",[190,1765,1767],{"className":192,"code":1766,"language":194,"meta":195,"style":195},"sudo apt update\nsudo apt install --reinstall nginx  # Замените nginx на имя пакета\n",[30,1768,1769,1778],{"__ignoreMap":195},[199,1770,1771,1773,1775],{"class":201,"line":202},[199,1772,271],{"class":205},[199,1774,274],{"class":209},[199,1776,1777],{"class":209}," update\n",[199,1779,1780,1782,1784,1786,1788,1791],{"class":201,"line":287},[199,1781,271],{"class":205},[199,1783,274],{"class":209},[199,1785,277],{"class":209},[199,1787,803],{"class":247},[199,1789,1790],{"class":209}," nginx",[199,1792,1793],{"class":283},"  # Замените nginx на имя пакета\n","\nЭто восстановит файлы из ",[30,1796,1797],{},"/usr/share/doc/nginx/examples/"," или оригинальные конфиги в ",[30,1800,1801],{},"/etc/",[52,1803,1804,1434,1807],{},[25,1805,1806],{},"RHEL/CentOS/Fedora",[190,1808,1810],{"className":192,"code":1809,"language":194,"meta":195,"style":195},"sudo dnf reinstall nginx\n",[30,1811,1812],{"__ignoreMap":195},[199,1813,1814,1816,1819,1821],{"class":201,"line":202},[199,1815,271],{"class":205},[199,1817,1818],{"class":209}," dnf",[199,1820,822],{"class":209},[199,1822,1823],{"class":209}," nginx\n",[52,1825,1826,1827,1830,1831,1834,1835,1838,1839,1842],{},"После переустановки ",[25,1828,1829],{},"не перезаписывайте"," свои кастомные настройки в ",[30,1832,1833],{},"/etc/nginx/nginx.conf"," (если они были), если пакетный менеджер спросит. Сравните старый и новый файлы конфигурации юнита (",[30,1836,1837],{},"/lib/systemd/system/nginx.service"," vs ",[30,1840,1841],{},"/etc/systemd/system/nginx.service","). Часто правильнее скопировать свои правки в новый оригинальный файл, а не использовать старый повреждённый.",[16,1844,934],{"id":933},[49,1846,1847,1857,1874,1885,1901],{},[52,1848,1849,1852,1853,1856],{},[25,1850,1851],{},"Всегда проверяйте синтаксис"," конфигурационных файлов службы и самого приложения (например, ",[30,1854,1855],{},"nginx -t",") перед перезагрузкой systemd.",[52,1858,1859,1864,1865,1869,1870,40,1872,65],{},[25,1860,962,1861],{},[30,1862,1863],{},"systemctl daemon-reload"," после ",[1866,1867,1868],"em",{},"любого"," изменения файла юнита в ",[30,1871,368],{},[30,1873,372],{},[52,1875,1876,1340,1879,33,1881,1884],{},[25,1877,1878],{},"Настраивайте разумные таймауты",[30,1880,1406],{},[30,1882,1883],{},"TimeoutStopSec=",") для долгих служб, чтобы избежать ложных срабатываний.",[52,1886,1887,1890,1891,33,1894,33,1897,1900],{},[25,1888,1889],{},"Следите за правами"," на каталоги, с которыми работает служба (",[30,1892,1893],{},"/var/log/",[30,1895,1896],{},"/var/lib/",[30,1898,1899],{},"/run/","). Рекомендуется создавать отдельного пользователя/группу для каждой службы.",[52,1902,1903,1906,1907,1910],{},[25,1904,1905],{},"Периодически проверяйте логи"," на предмет предупреждений (",[30,1908,1909],{},"journalctl -u \u003Cслужба>.service -p warning",") до того, как они превратятся в ошибки.",[472,1912],{},[174,1914,1916],{"id":1915},"способ-n-откат-к-предыдущей-рабочей-конфигурации-если-используется-git","Способ N: Откат к предыдущей рабочей конфигурации (если используется Git)",[21,1918,1919],{},"Если конфигурационные файлы службы находятся под контролем версий (что хорошая практика):",[97,1921,1922,1956,1991,2040],{},[52,1923,1924,1925],{},"Определите, когда служба последний раз работала:\n",[190,1926,1928],{"className":192,"code":1927,"language":194,"meta":195,"style":195},"sudo journalctl -u nginx.service -b --no-pager | grep -i \"started\\|failed\"\n",[30,1929,1930],{"__ignoreMap":195},[199,1931,1932,1934,1937,1939,1941,1943,1946,1948,1950,1953],{"class":201,"line":202},[199,1933,271],{"class":205},[199,1935,1936],{"class":209}," journalctl",[199,1938,1446],{"class":247},[199,1940,1449],{"class":209},[199,1942,1452],{"class":247},[199,1944,1945],{"class":247}," --no-pager",[199,1947,356],{"class":233},[199,1949,359],{"class":205},[199,1951,1952],{"class":247}," -i",[199,1954,1955],{"class":209}," \"started\\|failed\"\n",[52,1957,1958,1959],{},"Найдите коммит, после которого начались сбои:\n",[190,1960,1962],{"className":192,"code":1961,"language":194,"meta":195,"style":195},"cd /etc/systemd/system/\ngit log --oneline -p -- nginx.service\n",[30,1963,1964,1972],{"__ignoreMap":195},[199,1965,1966,1969],{"class":201,"line":202},[199,1967,1968],{"class":247},"cd",[199,1970,1971],{"class":209}," /etc/systemd/system/\n",[199,1973,1974,1977,1980,1983,1985,1988],{"class":201,"line":287},[199,1975,1976],{"class":205},"git",[199,1978,1979],{"class":209}," log",[199,1981,1982],{"class":247}," --oneline",[199,1984,1493],{"class":247},[199,1986,1987],{"class":247}," --",[199,1989,1990],{"class":209}," nginx.service\n",[52,1992,1993,1994],{},"Временно верните предыдущую версию файла:\n",[190,1995,1997],{"className":192,"code":1996,"language":194,"meta":195,"style":195},"sudo git checkout \u003Cхэш_коммита> -- nginx.service\nsudo systemctl daemon-reload\nsudo systemctl restart nginx.service\n",[30,1998,1999,2022,2030],{"__ignoreMap":195},[199,2000,2001,2003,2006,2009,2011,2014,2016,2018,2020],{"class":201,"line":202},[199,2002,271],{"class":205},[199,2004,2005],{"class":209}," git",[199,2007,2008],{"class":209}," checkout",[199,2010,234],{"class":233},[199,2012,2013],{"class":209},"хэш_коммит",[199,2015,241],{"class":240},[199,2017,244],{"class":233},[199,2019,1987],{"class":247},[199,2021,1990],{"class":209},[199,2023,2024,2026,2028],{"class":201,"line":287},[199,2025,271],{"class":205},[199,2027,433],{"class":209},[199,2029,436],{"class":209},[199,2031,2032,2034,2036,2038],{"class":201,"line":663},[199,2033,271],{"class":205},[199,2035,433],{"class":209},[199,2037,670],{"class":209},[199,2039,1990],{"class":209},[52,2041,2042],{},"Если это помогло, проанализируйте, какие именно изменения сломали службу, и внесите их более аккуратно.",[174,2044,2046],{"id":2045},"способ-n1-запуск-службы-вручную-для-отладки","Способ N+1: Запуск службы вручную для отладки",[21,2048,2049],{},"Иногда systemd \"затыкает\" вывод ошибки. Запустите исполняемый файл напрямую от того же пользователя, под которым работает служба.",[97,2051,2052,2058],{},[52,2053,2054,2055,2057],{},"Узнайте пользователя из юнит-файла (",[30,2056,1371],{},") или из лога.",[52,2059,2060,2061,2116,2117,40,2120,2123],{},"Выполните:\n",[190,2062,2064],{"className":192,"code":2063,"language":194,"meta":195,"style":195},"sudo -u \u003Cпользователь> /usr/bin/some-service --verbose\n# или, если служба запускает скрипт:\nsudo -u \u003Cпользователь> /bin/bash -x /path/to/startup-script.sh\n",[30,2065,2066,2088,2093],{"__ignoreMap":195},[199,2067,2068,2070,2072,2074,2077,2080,2082,2085],{"class":201,"line":202},[199,2069,271],{"class":205},[199,2071,1446],{"class":247},[199,2073,234],{"class":233},[199,2075,2076],{"class":209},"пользовател",[199,2078,2079],{"class":240},"ь",[199,2081,244],{"class":233},[199,2083,2084],{"class":209}," /usr/bin/some-service",[199,2086,2087],{"class":247}," --verbose\n",[199,2089,2090],{"class":201,"line":287},[199,2091,2092],{"class":283},"# или, если служба запускает скрипт:\n",[199,2094,2095,2097,2099,2101,2103,2105,2107,2110,2113],{"class":201,"line":663},[199,2096,271],{"class":205},[199,2098,1446],{"class":247},[199,2100,234],{"class":233},[199,2102,2076],{"class":209},[199,2104,2079],{"class":240},[199,2106,244],{"class":233},[199,2108,2109],{"class":209}," /bin/bash",[199,2111,2112],{"class":247}," -x",[199,2114,2115],{"class":209}," /path/to/startup-script.sh\n","\nФлаги ",[30,2118,2119],{},"--verbose",[30,2121,2122],{},"-x"," (для bash) дадут подробный вывод. Часто ошибка становится очевидной при прямом запуске.",[1006,2125,2126],{},"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":195,"searchDepth":287,"depth":287,"links":2128},[2129,2131,2132,2139],{"id":1290,"depth":287,"text":2130},"Что означает ошибка systemd-failed-to-start",{"id":94,"depth":287,"text":95},{"id":171,"depth":287,"text":172,"children":2133},[2134,2136,2137,2138],{"id":1412,"depth":663,"text":2135},"Способ 1: Анализ логов службы через journalctl",{"id":1519,"depth":663,"text":1520},{"id":1643,"depth":663,"text":1644},{"id":1752,"depth":663,"text":1753},{"id":933,"depth":287,"text":934,"children":2140},[2141,2142],{"id":1915,"depth":663,"text":1916},{"id":2045,"depth":663,"text":2046},"systemd-failed","2026-02-15 16:38:58","Ошибка Failed to start в systemd мешает работе сервисов. Узнайте, как быстро диагностировать проблему через journalctl и исправить её проверенными способами. Пошаговая инструкция.","15-30 минут",[2148,2151,2154,2157],{"question":2149,"answer":2150},"Что означает ошибка 'Failed to start' в выводе systemctl?","Эта ошибка означает, что systemd не смог успешно запустить указанную службу (юнит). Причина может быть в самой службе, её конфигурации, зависимостях или конфликте ресурсов.",{"question":2152,"answer":2153},"Где искать подробную информацию о причине сбоя systemd?","Используйте команду `journalctl -u \u003Cимя_службы>.service --no-pager -b`, чтобы увидеть логи конкретной службы за текущую загрузку. Ключевые слова 'Failed', 'Error', 'exit code' укажут на проблему.",{"question":2155,"answer":2156},"Может ли ошибка 'Failed to start' быть вызвана недостатком прав?","Да, часто. Если служба запускается от неправильного пользователя (например, root, а должна от nginx) или в конфиге указан недоступный путь, systemd не сможет её запустить.",{"question":2158,"answer":2159},"Как временно обойти проблему, чтобы система загрузилась?","Можно отключить problematic юнит на загрузку командой `sudo systemctl disable \u003Cслужба>.service` или запустить систему в режиме восстановления, чтобы исправить конфигурацию.",[2161,2164,2167,2170,2173,2176],{"name":2162,"text":2163},"Проверьте точное состояние службы и код ошибки","Выполните `systemctl status \u003Cслужба>.service`. В разделе 'Active:' и последних строках лога будет указан код ошибки (например, 'exit-code' или 'timeout'). Запишите его.",{"name":2165,"text":2166},"Изучите полные логи службы через journalctl","Используйте `journalctl -u \u003Cслужба>.service -b --no-pager`. Прокрутите лог до конца и найдите строки с 'Failed', 'error', 'Permission denied', 'No such file'. Это ключ к причине.",{"name":2168,"text":2169},"Проверьте конфигурационный файл юнита на синтаксис","Выполните `systemd-analyze verify /etc/systemd/system/\u003Cслужба>.service` (или путь к вашему файлу). Команда проверит синтаксис и укажет на ошибки в секциях [Service], [Install].",{"name":2171,"text":2172},"Восстановите или переустановите проблемный пакет (если применимо)","Если служба относится к пакету (например, nginx, postgresql), попробуйте `sudo apt reinstall \u003Cпакет>` (Debian/Ubuntu) или `sudo dnf reinstall \u003Cпакет>` (RHEL/Fedora). Это восстановит оригинальные файлы конфигурации.",{"name":2174,"text":2175},"Вручную исправьте найденную проблему","В зависимости от логов: исправьте путь в `ExecStart`, права на файлы (`chmod`, `chown`), разрешите конфликт портов, добавьте недостающие зависимости (`Requires=`, `After=`) в конфиг юнита.",{"name":2177,"text":2178},"Перезапустите и включите службу","После исправлений выполните `sudo systemctl daemon-reload`, затем `sudo systemctl restart \u003Cслужба>.service` и `sudo systemctl enable \u003Cслужба>.service`. Проверьте статус снова.","PT20M",[2181,2182,2183,2184,2185,2186,2187,2188],"systemd failed to start","ошибка systemd юнит не запустился","failed to start служба systemd","как исправить systemd ошибка запуска","journalctl ошибка юнита","systemctl status failed","systemd dependency failed","восстановление systemd службы",{},[2191,1076,2192],"/errors/linux/systemd-unit-not-found","/guides/linux/systemd-service-creation","Ошибки Linux",{"title":1279,"description":2145},"high","errors/linux/systemd-failed-to-start","Статья подробно разбирает ошибку 'Failed to start' в systemd, её основные причины и 4 проверенных способа решения. Вы научитесь анализировать логи и восстанавливать работу служб.",[2199,1087,227,2200,1416,2201,2202],"ошибки linux","администрирование","service","boot","eIns-0UfD2cGVn2HufRiXZrk1AiyCuiXxeXglmXIzm0",{"id":2205,"title":2206,"appliesTo":2207,"author":11,"body":2210,"canonical":1021,"code":1021,"createdAt":2960,"description":2961,"difficulty":1025,"draft":1026,"estimatedTime":1027,"extension":1028,"faq":2962,"howToSteps":2975,"howToTotalTime":2179,"image":1021,"keywords":2993,"locale":1073,"meta":3002,"navigation":1075,"path":1080,"platform":1077,"related":3003,"section":3006,"seo":3007,"severity":1021,"stem":3008,"summary":3009,"tags":3010,"twitterCreator":1021,"twitterSite":1021,"type":3012,"updatedAt":2960,"__hash__":3013},"content_ru/guides/linux/systemd-service-management.md","Управление systemd-сервисами: полное руководство по запуску, остановке и настройке",[1282,2208,9,2209],"CentOS/RHEL 8+","Fedora",{"type":13,"value":2211,"toc":2949},[2212,2216,2219,2226,2230,2247,2251,2254,2361,2365,2371,2454,2456,2460,2560,2564,2569,2692,2696,2767,2771,2815,2819,2946],[16,2213,2215],{"id":2214},"введение-зачем-это-нужно","Введение / Зачем это нужно",[21,2217,2218],{},"Systemd стал стандартом для управления службами и процессами в большинстве современных дистрибутивов Linux (Ubuntu, Fedora, CentOS/RHEL 8+, Debian 10+). Понимание его основ — обязательный навык для системного администратора и разработчика, работающего с серверами.",[21,2220,2221,2222,1319,2224,65],{},"Это руководство даст вам практические навыки для повседневного управления сервисами: запуск, остановка, настройка автозапуска и диагностика сбоев. Вы сможете уверенно работать с такими командами, как ",[30,2223,227],{},[30,2225,1416],{},[16,2227,2229],{"id":2228},"требования-подготовка","Требования / Подготовка",[49,2231,2232,2238,2244],{},[52,2233,2234,2235,81],{},"Дистрибутив Linux с системой инициализации systemd (проверьте: ",[30,2236,2237],{},"pidof systemd",[52,2239,2240,2241,2243],{},"Доступ к терминалу с правами ",[25,2242,271],{}," (для управления системными службами).",[52,2245,2246],{},"Базовое понимание командной строки.",[16,2248,2250],{"id":2249},"шаг-1-основные-команды-управления-состоянием-службы","Шаг 1: Основные команды управления состоянием службы",[21,2252,2253],{},"Systemctl — основной инструмент взаимодействия с systemd. Вот ключевые команды для управления состоянием:",[49,2255,2256,2284,2305,2325],{},[52,2257,2258,2261,2278],{},[25,2259,2260],{},"Запуск службы:",[190,2262,2264],{"className":192,"code":2263,"language":194,"meta":195,"style":195},"sudo systemctl start имя_службы.service\n",[30,2265,2266],{"__ignoreMap":195},[199,2267,2268,2270,2272,2275],{"class":201,"line":202},[199,2269,271],{"class":205},[199,2271,433],{"class":209},[199,2273,2274],{"class":209}," start",[199,2276,2277],{"class":209}," имя_службы.service\n",[1866,2279,2280,2281],{},"Пример: ",[30,2282,2283],{},"sudo systemctl start nginx",[52,2285,2286,2289],{},[25,2287,2288],{},"Остановка службы:",[190,2290,2292],{"className":192,"code":2291,"language":194,"meta":195,"style":195},"sudo systemctl stop имя_службы.service\n",[30,2293,2294],{"__ignoreMap":195},[199,2295,2296,2298,2300,2303],{"class":201,"line":202},[199,2297,271],{"class":205},[199,2299,433],{"class":209},[199,2301,2302],{"class":209}," stop",[199,2304,2277],{"class":209},[52,2306,2307,2310],{},[25,2308,2309],{},"Перезапуск службы (мягкий):",[190,2311,2313],{"className":192,"code":2312,"language":194,"meta":195,"style":195},"sudo systemctl restart имя_службы.service\n",[30,2314,2315],{"__ignoreMap":195},[199,2316,2317,2319,2321,2323],{"class":201,"line":202},[199,2318,271],{"class":205},[199,2320,433],{"class":209},[199,2322,670],{"class":209},[199,2324,2277],{"class":209},[52,2326,2327,2330,2346],{},[25,2328,2329],{},"Принудительная перезагрузка (kill и запуск):",[190,2331,2333],{"className":192,"code":2332,"language":194,"meta":195,"style":195},"sudo systemctl try-restart имя_службы.service\n",[30,2334,2335],{"__ignoreMap":195},[199,2336,2337,2339,2341,2344],{"class":201,"line":202},[199,2338,271],{"class":205},[199,2340,433],{"class":209},[199,2342,2343],{"class":209}," try-restart",[199,2345,2277],{"class":209},[1500,2347,2348],{},[21,2349,1504,2350,2353,2354,1340,2357,2360],{},[25,2351,2352],{},"Совет:"," Для веб-серверов (nginx, apache) после изменения конфигурации используйте ",[30,2355,2356],{},"reload",[30,2358,2359],{},"sudo systemctl reload nginx","), чтобы перечитать конфиг без разрыва соединений.",[16,2362,2364],{"id":2363},"шаг-2-управление-автозагрузкой-включениеотключение","Шаг 2: Управление автозагрузкой (включение/отключение)",[21,2366,2367,2368,65],{},"Чтобы служба автоматически запускалась при загрузке системы, её нужно ",[1866,2369,2370],{},"включить",[49,2372,2373,2397,2418],{},[52,2374,2375,2378,2394,2395,65],{},[25,2376,2377],{},"Включить автозапуск:",[190,2379,2381],{"className":192,"code":2380,"language":194,"meta":195,"style":195},"sudo systemctl enable имя_службы.service\n",[30,2382,2383],{"__ignoreMap":195},[199,2384,2385,2387,2389,2392],{"class":201,"line":202},[199,2386,271],{"class":205},[199,2388,433],{"class":209},[199,2390,2391],{"class":209}," enable",[199,2393,2277],{"class":209},"\nЭта команда создаёт символьную ссылку на unit-файл в каталоге ",[30,2396,368],{},[52,2398,2399,2402],{},[25,2400,2401],{},"Отключить автозапуск:",[190,2403,2405],{"className":192,"code":2404,"language":194,"meta":195,"style":195},"sudo systemctl disable имя_службы.service\n",[30,2406,2407],{"__ignoreMap":195},[199,2408,2409,2411,2413,2416],{"class":201,"line":202},[199,2410,271],{"class":205},[199,2412,433],{"class":209},[199,2414,2415],{"class":209}," disable",[199,2417,2277],{"class":209},[52,2419,2420,2423,2437,2438,2441,2442,2445,2446,2449,2450,2453],{},[25,2421,2422],{},"Проверить, включена ли служба в автозагрузку:",[190,2424,2426],{"className":192,"code":2425,"language":194,"meta":195,"style":195},"systemctl is-enabled имя_службы.service\n",[30,2427,2428],{"__ignoreMap":195},[199,2429,2430,2432,2435],{"class":201,"line":202},[199,2431,227],{"class":205},[199,2433,2434],{"class":209}," is-enabled",[199,2436,2277],{"class":209},"\nВывод: ",[30,2439,2440],{},"enabled"," (включена), ",[30,2443,2444],{},"disabled"," (отключена), ",[30,2447,2448],{},"static"," (не может быть включена напрямую, но может быть зависимостью), ",[30,2451,2452],{},"masked"," (полностью заблокирована).",[472,2455],{},[16,2457,2459],{"id":2458},"шаг-3-просмотр-статуса-и-всех-служб","Шаг 3: Просмотр статуса и всех служб",[49,2461,2462,2489,2509,2530],{},[52,2463,2464,2467,2480,2481,2484,2485,2488],{},[25,2465,2466],{},"Детальный статус конкретной службы:",[190,2468,2470],{"className":192,"code":2469,"language":194,"meta":195,"style":195},"systemctl status имя_службы.service\n",[30,2471,2472],{"__ignoreMap":195},[199,2473,2474,2476,2478],{"class":201,"line":202},[199,2475,227],{"class":205},[199,2477,345],{"class":209},[199,2479,2277],{"class":209},"\nВывод показывает: ",[30,2482,2483],{},"Active:"," (состояние), ",[30,2486,2487],{},"Main PID:"," (идентификатор процесса), и последние строки журнала этой службы.",[52,2490,2491,2494],{},[25,2492,2493],{},"Список всех загруженных (активных) юнитов:",[190,2495,2497],{"className":192,"code":2496,"language":194,"meta":195,"style":195},"systemctl list-units --type=service\n",[30,2498,2499],{"__ignoreMap":195},[199,2500,2501,2503,2506],{"class":201,"line":202},[199,2502,227],{"class":205},[199,2504,2505],{"class":209}," list-units",[199,2507,2508],{"class":247}," --type=service\n",[52,2510,2511,2514],{},[25,2512,2513],{},"Список ВСЕХ доступных служб (включая неактивные):",[190,2515,2517],{"className":192,"code":2516,"language":194,"meta":195,"style":195},"systemctl list-units --type=service --all\n",[30,2518,2519],{"__ignoreMap":195},[199,2520,2521,2523,2525,2528],{"class":201,"line":202},[199,2522,227],{"class":205},[199,2524,2505],{"class":209},[199,2526,2527],{"class":247}," --type=service",[199,2529,248],{"class":247},[52,2531,2532,2535],{},[25,2533,2534],{},"Поиск службы по имени:",[190,2536,2538],{"className":192,"code":2537,"language":194,"meta":195,"style":195},"systemctl list-units --type=service --all | grep -i ssh\n",[30,2539,2540],{"__ignoreMap":195},[199,2541,2542,2544,2546,2548,2551,2553,2555,2557],{"class":201,"line":202},[199,2543,227],{"class":205},[199,2545,2505],{"class":209},[199,2547,2527],{"class":247},[199,2549,2550],{"class":247}," --all",[199,2552,356],{"class":233},[199,2554,359],{"class":205},[199,2556,1952],{"class":247},[199,2558,2559],{"class":209}," ssh\n",[16,2561,2563],{"id":2562},"шаг-4-анализ-логов-с-помощью-journalctl","Шаг 4: Анализ логов с помощью journalctl",[21,2565,2566,2567,65],{},"Логи systemd хранятся в бинарном журнале, доступном через ",[30,2568,1416],{},[49,2570,2571,2591,2619,2638,2666],{},[52,2572,2573,2576],{},[25,2574,2575],{},"Просмотр логов конкретной службы:",[190,2577,2579],{"className":192,"code":2578,"language":194,"meta":195,"style":195},"sudo journalctl -u имя_службы.service\n",[30,2580,2581],{"__ignoreMap":195},[199,2582,2583,2585,2587,2589],{"class":201,"line":202},[199,2584,271],{"class":205},[199,2586,1936],{"class":209},[199,2588,1446],{"class":247},[199,2590,2277],{"class":209},[52,2592,2593,2600],{},[25,2594,2595,2596,2599],{},"Отслеживание логов в реальном времени (аналог ",[30,2597,2598],{},"tail -f","):",[190,2601,2603],{"className":192,"code":2602,"language":194,"meta":195,"style":195},"sudo journalctl -u имя_службы.service -f\n",[30,2604,2605],{"__ignoreMap":195},[199,2606,2607,2609,2611,2613,2616],{"class":201,"line":202},[199,2608,271],{"class":205},[199,2610,1936],{"class":209},[199,2612,1446],{"class":247},[199,2614,2615],{"class":209}," имя_службы.service",[199,2617,2618],{"class":247}," -f\n",[52,2620,2621,2624],{},[25,2622,2623],{},"Логи за последнюю загрузку системы:",[190,2625,2627],{"className":192,"code":2626,"language":194,"meta":195,"style":195},"sudo journalctl -b\n",[30,2628,2629],{"__ignoreMap":195},[199,2630,2631,2633,2635],{"class":201,"line":202},[199,2632,271],{"class":205},[199,2634,1936],{"class":209},[199,2636,2637],{"class":247}," -b\n",[52,2639,2640,2643],{},[25,2641,2642],{},"Логи с фильтрацией по времени:",[190,2644,2646],{"className":192,"code":2645,"language":194,"meta":195,"style":195},"sudo journalctl --since \"2026-02-15 10:00:00\" --until \"2026-02-15 12:00:00\"\n",[30,2647,2648],{"__ignoreMap":195},[199,2649,2650,2652,2654,2657,2660,2663],{"class":201,"line":202},[199,2651,271],{"class":205},[199,2653,1936],{"class":209},[199,2655,2656],{"class":247}," --since",[199,2658,2659],{"class":209}," \"2026-02-15 10:00:00\"",[199,2661,2662],{"class":247}," --until",[199,2664,2665],{"class":209}," \"2026-02-15 12:00:00\"\n",[52,2667,2668,2671],{},[25,2669,2670],{},"Показать логи с максимальной детализацией для службы:",[190,2672,2674],{"className":192,"code":2673,"language":194,"meta":195,"style":195},"sudo journalctl -u имя_службы.service -o verbose\n",[30,2675,2676],{"__ignoreMap":195},[199,2677,2678,2680,2682,2684,2686,2689],{"class":201,"line":202},[199,2679,271],{"class":205},[199,2681,1936],{"class":209},[199,2683,1446],{"class":247},[199,2685,2615],{"class":209},[199,2687,2688],{"class":247}," -o",[199,2690,2691],{"class":209}," verbose\n",[16,2693,2695],{"id":2694},"шаг-5-дополнительные-операции-перезагрузка-конфигурации-маскировка","Шаг 5: Дополнительные операции (перезагрузка конфигурации, маскировка)",[49,2697,2698,2715,2742],{},[52,2699,2700,2703],{},[25,2701,2702],{},"Перезагрузка конфигурации systemd (обязательно после создания/изменения unit-файлов):",[190,2704,2705],{"className":192,"code":424,"language":194,"meta":195,"style":195},[30,2706,2707],{"__ignoreMap":195},[199,2708,2709,2711,2713],{"class":201,"line":202},[199,2710,271],{"class":205},[199,2712,433],{"class":209},[199,2714,436],{"class":209},[52,2716,2717,2720,2735,2736,2738,2739,65],{},[25,2718,2719],{},"Полная блокировка службы (mask) — предотвращает любой ручной или автоматический запуск:",[190,2721,2723],{"className":192,"code":2722,"language":194,"meta":195,"style":195},"sudo systemctl mask имя_службы.service\n",[30,2724,2725],{"__ignoreMap":195},[199,2726,2727,2729,2731,2733],{"class":201,"line":202},[199,2728,271],{"class":205},[199,2730,433],{"class":209},[199,2732,603],{"class":209},[199,2734,2277],{"class":209},"\nСоздаёт символическую ссылку на ",[30,2737,617],{},". Разблокировка: ",[30,2740,2741],{},"sudo systemctl unmask имя_службы.service",[52,2743,2744,2747,2763,2764,2766],{},[25,2745,2746],{},"Принудительная остановка и сброс состояния службы:",[190,2748,2750],{"className":192,"code":2749,"language":194,"meta":195,"style":195},"sudo systemctl reset-failed имя_службы.service\n",[30,2751,2752],{"__ignoreMap":195},[199,2753,2754,2756,2758,2761],{"class":201,"line":202},[199,2755,271],{"class":205},[199,2757,433],{"class":209},[199,2759,2760],{"class":209}," reset-failed",[199,2762,2277],{"class":209},"\nПолезно, если служба в состоянии ",[30,2765,71],{}," и не запускается после исправления ошибки.",[16,2768,2770],{"id":2769},"проверка-результата","Проверка результата",[97,2772,2773,2788,2798],{},[52,2774,2775,2778,2779,2782,2783,2785,2786,65],{},[25,2776,2777],{},"Для проверки работы:"," выполните ",[30,2780,2781],{},"systemctl status имя_службы",". Убедитесь, что строка ",[30,2784,2483],{}," содержит ",[30,2787,1703],{},[52,2789,2790,2793,2794,2797],{},[25,2791,2792],{},"Для проверки автозагрузки:"," перезагрузите систему (",[30,2795,2796],{},"sudo reboot",") и после входа проверьте статус службы.",[52,2799,2800,2803,2804,2807,2808,33,2810,33,2812,81],{},[25,2801,2802],{},"Для проверки логов:"," убедитесь, что ",[30,2805,2806],{},"journalctl -u имя_службы"," не содержит ошибок (",[30,2809,71],{},[30,2811,1092],{},[30,2813,2814],{},"permission denied",[16,2816,2818],{"id":2817},"возможные-проблемы","Возможные проблемы",[49,2820,2821,2846,2867,2887,2921],{},[52,2822,2823,2831],{},[25,2824,1297,2825,40,2828],{},[30,2826,2827],{},"Failed to start ...",[30,2829,2830],{},"Unit not found.",[49,2832,2833],{},[52,2834,2835,2838,2839,2842,2843,65],{},[25,2836,2837],{},"Причина:"," Unit-файл отсутствует или имеет неверное имя. Убедитесь, что служба существует: ",[30,2840,2841],{},"systemctl list-unit-files | grep имя_службы",". Проверьте синтаксис unit-файла: ",[30,2844,2845],{},"sudo systemd-analyze verify /etc/systemd/system/имя_службы.service",[52,2847,2848,2851],{},[25,2849,2850],{},"Служба запускается, но сразу же останавливается.",[49,2852,2853],{},[52,2854,2855,2857,2858,2860,2861,2863,2864,65],{},[25,2856,2837],{}," Ошибка в самом приложении или неверные параметры в секции ",[30,2859,1347],{}," (например, ",[30,2862,1351],{}," указывает на несуществующий бинарник). Смотрите детальные логи: ",[30,2865,2866],{},"sudo journalctl -u имя_службы.service -n 50 --no-pager",[52,2868,2869,2874],{},[25,2870,2871,2873],{},[30,2872,1469],{}," при попытке управления системной службой.",[49,2875,2876],{},[52,2877,2878,2880,2881,2883,2884,2886],{},[25,2879,2837],{}," Выполняете команду без ",[30,2882,271],{},". Для управления системными службами (из ",[30,2885,368],{},") требуются права root.",[52,2888,2889,2896],{},[25,2890,2891,2892,2895],{},"Служба не включается в автозагрузку (",[30,2893,2894],{},"enable"," не срабатывает).",[49,2897,2898],{},[52,2899,2900,2902,2903,2905,2906,40,2908,2911,2912,2914,2915,1319,2918,2920],{},[25,2901,2837],{}," Unit-файл имеет ",[30,2904,899],{}," секцию, но не содержит ",[30,2907,895],{},[30,2909,2910],{},"RequiredBy="," (чаще всего ",[30,2913,905],{},"). Добавьте эту строку в unit-файл и выполните ",[30,2916,2917],{},"daemon-reload",[30,2919,2894],{}," заново.",[52,2922,2923,2926],{},[25,2924,2925],{},"Циклические перезапуски (restart loop).",[49,2927,2928],{},[52,2929,2930,2932,2933,2785,2935,1323,2938,2941,2942,2945],{},[25,2931,2837],{}," В unit-файле секция ",[30,2934,1347],{},[30,2936,2937],{},"Restart=always",[30,2939,2940],{},"on-failure","), а процесс немедленно завершается с ошибкой. Исправьте ошибку приложения или временно закомментируйте ",[30,2943,2944],{},"Restart"," для диагностики.",[1006,2947,2948],{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .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 .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}",{"title":195,"searchDepth":287,"depth":287,"links":2950},[2951,2952,2953,2954,2955,2956,2957,2958,2959],{"id":2214,"depth":287,"text":2215},{"id":2228,"depth":287,"text":2229},{"id":2249,"depth":287,"text":2250},{"id":2363,"depth":287,"text":2364},{"id":2458,"depth":287,"text":2459},{"id":2562,"depth":287,"text":2563},{"id":2694,"depth":287,"text":2695},{"id":2769,"depth":287,"text":2770},{"id":2817,"depth":287,"text":2818},"2026-02-16 12:40:35","Пошаговая инструкция по работе с systemd. Узнайте, как управлять службами Linux через systemctl: запуск, остановка, автозагрузка, просмотр логов. Решения для Ubuntu, CentOS, Debian.",[2963,2966,2969,2972],{"answer":2964,"question":2965},"Используйте команду `systemctl status \u003Cимя_службы>`. В выводе ищите строку `Active: active (running)` для работающих сервисов.","Как проверить, работает ли служба systemd?",{"answer":2967,"question":2968},"Systemd обеспечивает параллельный запуск служб, имеет единую точку управления (systemctl), встроенный журнал (journalctl) и более сложные зависимости между сервисами.","Чем systemd отличается от старых init-скриптов (SysVinit)?",{"answer":2970,"question":2971},"Создайте файл `/etc/systemd/system/ваш-сервис.service` с корректными секциями `[Unit]`, `[Service]` и `[Install]`, затем выполните `systemctl daemon-reload`.","Как создать свой собственный unit-файл для сервиса?",{"answer":2973,"question":2974},"Возможные причины: ошибка в unit-файле, конфликт зависимостей, отсутствие требуемого устройства или файла. Проверьте логи: `journalctl -u \u003Cимя_службы> -b`.","Почему служба не запускается при загрузке, хотя включена через systemctl enable?",[2976,2979,2982,2985,2988,2991],{"name":2977,"text":2978},"Проверка статуса службы","Используйте `systemctl status \u003Cservice>` для получения подробной информации о состоянии, PID и последних записях журнала.",{"name":2980,"text":2981},"Базовое управление (start, stop, restart)","Запустите службу командой `systemctl start \u003Cservice>`, остановите `stop`, перезапустите `restart`.",{"name":2983,"text":2984},"Управление автозагрузкой","Включите автозапуск при загрузке системы: `systemctl enable \u003Cservice>`. Отключите: `systemctl disable \u003Cservice>`.",{"name":2986,"text":2987},"Просмотр всех служб и фильтрация","`systemctl list-units --type=service --all` показывает все unit-файлы. Используйте `grep` для поиска, например: `systemctl list-units | grep nginx`.",{"name":2989,"text":2990},"Работа с журналом (journalctl)","Просмотрите логи конкретной службы: `journalctl -u \u003Cservice> -f` (слежение в реальном времени).",{"name":1056,"text":2992},"После ручного изменения unit-файлов выполните `systemctl daemon-reload`, чтобы systemd перечитал конфигурацию.",[2994,2995,2996,2997,2998,2999,3000,3001],"systemd управление сервисами","systemctl команды","как запустить службу в linux","systemd journal логи","включить автозагрузку службы","остановить systemd сервис","проверить статус службы","systemd service management",{},[3004,1079,3005],"/guides/linux/systemd-journal-logs","/guides/linux/crontab-vs-systemd-timers","Гайды Linux",{"title":2206,"description":2961},"guides/linux/systemd-service-management","В этом гайде вы освоите основные команды systemctl для управления службами в современных дистрибутивах Linux. Вы научитесь запускать, останавливать, включать в автозагрузку сервисы и диагностировать проблемы.",[1087,1077,3011,3012,227],"sysadmin","guide","9uE8OqlOsTa0iBKReZb5paRxhaZypg32oh1Z0Lq3y94"]