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