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