[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"page-ru-/guides/linux/systemd-timers-explained":3,"mdc--1bb1w6-key":637,"mdc--6m0org-key":648,"mdc-cfzs4f-key":656,"mdc-exmahx-key":681,"mdc-cev67y-key":698,"mdc--rt71e5-key":713,"mdc-vmz7r1-key":729,"mdc-nfwjrd-key":737,"mdc-4biher-key":745,"related-/guides/linux/systemd-units-explained,/guides/linux/cron-explained,/guides/linux/systemd-services-explained":761},{"id":4,"title":5,"appliesTo":6,"author":11,"body":12,"canonical":569,"code":569,"createdAt":570,"description":571,"difficulty":572,"draft":573,"estimatedTime":574,"extension":575,"faq":576,"howToSteps":589,"howToTotalTime":605,"image":569,"keywords":606,"locale":616,"meta":617,"navigation":118,"path":618,"platform":619,"related":620,"section":624,"seo":625,"severity":569,"stem":626,"summary":627,"tags":628,"twitterCreator":569,"twitterSite":569,"type":635,"updatedAt":570,"__hash__":636},"content_ru/guides/linux/systemd-timers-explained.md","Пошаговое руководство по настройке и использованию таймеров Systemd в Linux",[7,8,9,10],"Ubuntu 22.04 LTS","Debian 12","Fedora 38","openSUSE Leap 15.5","FixPedia Team",{"type":13,"value":14,"toc":555},"minimark",[15,20,24,27,31,68,72,77,84,144,148,151,205,209,212,255,259,262,306,313,317,324,344,351,367,371,374,419,422,426,429,448,451,467,474,478,493,506,522,536,551],[16,17,19],"h2",{"id":18},"введение-зачем-это-нужно","Введение / Зачем это нужно",[21,22,23],"p",{},"Systemd-timers — это современная альтернатива cron, которая использует тот же менеджер системных служб. Таймеры позволяют запускать скрипты, сервисы или другие unit-файлы по точному расписанию или на основе событий. По сравнению с cron они предлагают более гибкие триггеры (например, запуск по таймеру после активации другой службы) и лучше интегрированы с системой.",[21,25,26],{},"После выполнения этого руководства вы сможете создавать как простые ежедневные задачи, так и сложные, основанные на событиях таймеры, и отладить их с помощью стандартных инструментов systemd.",[16,28,30],{"id":29},"требования-подготовка","Требования / Подготовка",[32,33,34,38,50,61],"ul",{},[35,36,37],"li",{},"Система с systemd (любой современный дистрибутив Linux: Ubuntu, Debian, Fedora, openSUSE и т.д.).",[35,39,40,41,45,46,49],{},"Права на запись в ",[42,43,44],"code",{},"~/.config/systemd/user/"," (для пользовательских таймеров) или ",[42,47,48],{},"/etc/systemd/system/"," (для системных таймеров).",[35,51,52,53,56,57,60],{},"Базовое знание работы с консолью и редактором текста (например, ",[42,54,55],{},"nano"," или ",[42,58,59],{},"vim",").",[35,62,63,64,67],{},"Пример скрипта, который вы хотите запускать по расписанию (например, ",[42,65,66],{},"#!/bin/bash"," файл).",[16,69,71],{"id":70},"пошаговая-инструкция","Пошаговая инструкция",[73,74,76],"h3",{"id":75},"шаг-1-создайте-unit-файл-для-скрипта","Шаг 1: Создайте unit-файл для скрипта",[21,78,79,80,83],{},"Сначала определите службу, которая будет выполнять вашу задачу. Пример unit-файла для скрипта ",[42,81,82],{},"/home/user/scripts/backup.sh",":",[85,86,91],"pre",{"className":87,"code":88,"language":89,"meta":90,"style":90},"language-ini shiki shiki-themes github-light github-dark","# /etc/systemd/system/backup.service\n[Unit]\nDescription=Backup script\n\n[Service]\nType=oneshot\nExecStart=/home/user/scripts/backup.sh\nUser=user\n","ini","",[42,92,93,101,107,113,120,126,132,138],{"__ignoreMap":90},[94,95,98],"span",{"class":96,"line":97},"line",1,[94,99,100],{},"# /etc/systemd/system/backup.service\n",[94,102,104],{"class":96,"line":103},2,[94,105,106],{},"[Unit]\n",[94,108,110],{"class":96,"line":109},3,[94,111,112],{},"Description=Backup script\n",[94,114,116],{"class":96,"line":115},4,[94,117,119],{"emptyLinePlaceholder":118},true,"\n",[94,121,123],{"class":96,"line":122},5,[94,124,125],{},"[Service]\n",[94,127,129],{"class":96,"line":128},6,[94,130,131],{},"Type=oneshot\n",[94,133,135],{"class":96,"line":134},7,[94,136,137],{},"ExecStart=/home/user/scripts/backup.sh\n",[94,139,141],{"class":96,"line":140},8,[94,142,143],{},"User=user\n",[73,145,147],{"id":146},"шаг-2-создайте-таймер-файл","Шаг 2: Создайте таймер-файл",[21,149,150],{},"Теперь создайте таймер, который будет запускать службу. Пример таймера, который запускается каждый день в 02:00:",[85,152,154],{"className":87,"code":153,"language":89,"meta":90,"style":90},"# /etc/systemd/system/backup.timer\n[Unit]\nDescription=Run backup daily at 02:00\n\n[Timer]\nOnCalendar=*-*-* 02:00:00\nPersistent=true\n\n[Install]\nWantedBy=timers.target\n",[42,155,156,161,165,170,174,179,184,189,193,199],{"__ignoreMap":90},[94,157,158],{"class":96,"line":97},[94,159,160],{},"# /etc/systemd/system/backup.timer\n",[94,162,163],{"class":96,"line":103},[94,164,106],{},[94,166,167],{"class":96,"line":109},[94,168,169],{},"Description=Run backup daily at 02:00\n",[94,171,172],{"class":96,"line":115},[94,173,119],{"emptyLinePlaceholder":118},[94,175,176],{"class":96,"line":122},[94,177,178],{},"[Timer]\n",[94,180,181],{"class":96,"line":128},[94,182,183],{},"OnCalendar=*-*-* 02:00:00\n",[94,185,186],{"class":96,"line":134},[94,187,188],{},"Persistent=true\n",[94,190,191],{"class":96,"line":140},[94,192,119],{"emptyLinePlaceholder":118},[94,194,196],{"class":96,"line":195},9,[94,197,198],{},"[Install]\n",[94,200,202],{"class":96,"line":201},10,[94,203,204],{},"WantedBy=timers.target\n",[73,206,208],{"id":207},"шаг-3-включите-и-запустите-таймер","Шаг 3: Включите и запустите таймер",[21,210,211],{},"Перезагрузите daemon, чтобы systemd обнаружил новые unit-файлы, затем включите и запустите таймер:",[85,213,217],{"className":214,"code":215,"language":216,"meta":90,"style":90},"language-bash shiki shiki-themes github-light github-dark","sudo systemctl daemon-reload\nsudo systemctl enable backup.timer\nsudo systemctl start backup.timer\n","bash",[42,218,219,232,244],{"__ignoreMap":90},[94,220,221,225,229],{"class":96,"line":97},[94,222,224],{"class":223},"sScJk","sudo",[94,226,228],{"class":227},"sZZnC"," systemctl",[94,230,231],{"class":227}," daemon-reload\n",[94,233,234,236,238,241],{"class":96,"line":103},[94,235,224],{"class":223},[94,237,228],{"class":227},[94,239,240],{"class":227}," enable",[94,242,243],{"class":227}," backup.timer\n",[94,245,246,248,250,253],{"class":96,"line":109},[94,247,224],{"class":223},[94,249,228],{"class":227},[94,251,252],{"class":227}," start",[94,254,243],{"class":227},[73,256,258],{"id":257},"шаг-4-проверьте-состояние-таймера","Шаг 4: Проверьте состояние таймера",[21,260,261],{},"Убедитесь, что таймер активен и запланирован:",[85,263,265],{"className":214,"code":264,"language":216,"meta":90,"style":90},"# Проверка статуса таймера\nsudo systemctl status backup.timer\n\n# Список всех таймеров\nsudo systemctl list-timers --all\n",[42,266,267,273,284,288,293],{"__ignoreMap":90},[94,268,269],{"class":96,"line":97},[94,270,272],{"class":271},"sJ8bj","# Проверка статуса таймера\n",[94,274,275,277,279,282],{"class":96,"line":103},[94,276,224],{"class":223},[94,278,228],{"class":227},[94,280,281],{"class":227}," status",[94,283,243],{"class":227},[94,285,286],{"class":96,"line":109},[94,287,119],{"emptyLinePlaceholder":118},[94,289,290],{"class":96,"line":115},[94,291,292],{"class":271},"# Список всех таймеров\n",[94,294,295,297,299,302],{"class":96,"line":122},[94,296,224],{"class":223},[94,298,228],{"class":227},[94,300,301],{"class":227}," list-timers",[94,303,305],{"class":304},"sj4cs"," --all\n",[21,307,308,309,312],{},"Если таймер отображается как ",[42,310,311],{},"активен (включен)",", он будет запускать службу по расписанию.",[73,314,316],{"id":315},"шаг-5-настройте-периодичность-с-помощью-календаря","Шаг 5: Настройте периодичность с помощью календаря",[21,318,319,320,323],{},"Вы можете изменить расписание, отредтировав ",[42,321,322],{},"OnCalendar",". Примеры:",[32,325,326,332,338],{},[35,327,328,329],{},"Каждый час: ",[42,330,331],{},"OnCalendar=*:0/60",[35,333,334,335],{},"Каждый понедельник в 9 утра: ",[42,336,337],{},"OnCalendar=Mon *-*-* 09:00:00",[35,339,340,341],{},"Каждый день в 8:00 и 20:00: ",[42,342,343],{},"OnCalendar=*-*-* 08:00:00,20:00:00",[21,345,346,347,350],{},"После изменения отредактируйте таймер, выполните ",[42,348,349],{},"systemctl daemon-reload"," и перезапустите таймер:",[85,352,354],{"className":214,"code":353,"language":216,"meta":90,"style":90},"sudo systemctl restart backup.timer\n",[42,355,356],{"__ignoreMap":90},[94,357,358,360,362,365],{"class":96,"line":97},[94,359,224],{"class":223},[94,361,228],{"class":227},[94,363,364],{"class":227}," restart",[94,366,243],{"class":227},[73,368,370],{"id":369},"шаг-6-удалите-таймер-если-нужно","Шаг 6: Удалите таймер (если нужно)",[21,372,373],{},"Если таймер больше не нужен:",[85,375,377],{"className":214,"code":376,"language":216,"meta":90,"style":90},"sudo systemctl disable backup.timer\nsudo systemctl stop backup.timer\nsudo rm /etc/systemd/system/backup.timer\nsudo systemctl daemon-reload\n",[42,378,379,390,401,411],{"__ignoreMap":90},[94,380,381,383,385,388],{"class":96,"line":97},[94,382,224],{"class":223},[94,384,228],{"class":227},[94,386,387],{"class":227}," disable",[94,389,243],{"class":227},[94,391,392,394,396,399],{"class":96,"line":103},[94,393,224],{"class":223},[94,395,228],{"class":227},[94,397,398],{"class":227}," stop",[94,400,243],{"class":227},[94,402,403,405,408],{"class":96,"line":109},[94,404,224],{"class":223},[94,406,407],{"class":227}," rm",[94,409,410],{"class":227}," /etc/systemd/system/backup.timer\n",[94,412,413,415,417],{"class":96,"line":115},[94,414,224],{"class":223},[94,416,228],{"class":227},[94,418,231],{"class":227},[420,421],"in-article-ad",{},[16,423,425],{"id":424},"проверка-результата","Проверка результата",[21,427,428],{},"Чтобы убедиться, что таймер работает, проверьте лог службы после её запуска:",[85,430,432],{"className":214,"code":431,"language":216,"meta":90,"style":90},"journalctl -u backup.service -f\n",[42,433,434],{"__ignoreMap":90},[94,435,436,439,442,445],{"class":96,"line":97},[94,437,438],{"class":223},"journalctl",[94,440,441],{"class":304}," -u",[94,443,444],{"class":227}," backup.service",[94,446,447],{"class":304}," -f\n",[21,449,450],{},"Вы также можете просмотреть журнал таймеров:",[85,452,454],{"className":214,"code":453,"language":216,"meta":90,"style":90},"journalctl -u backup.timer -f\n",[42,455,456],{"__ignoreMap":90},[94,457,458,460,462,465],{"class":96,"line":97},[94,459,438],{"class":223},[94,461,441],{"class":304},[94,463,464],{"class":227}," backup.timer",[94,466,447],{"class":304},[21,468,469,470,473],{},"Если в логах отображается ",[42,471,472],{},"Triggered Reason: Timer was activated",", таймер успешно запустил службу.",[16,475,477],{"id":476},"возможные-проблемы","Возможные проблемы",[479,480,481],"blockquote",{},[21,482,483,484,488,489,492],{},"⚠️ ",[485,486,487],"strong",{},"Важно:"," Убедитесь, что ",[42,490,491],{},"ExecStart"," в unit-файле указывает на существующий и исполняемый скрипт. Если скрипт не найден, таймер зарегистрирует ошибку, но не отобразит её в статусе.",[479,494,495],{},[21,496,497,498,501,502,505],{},"💡 ",[485,499,500],{},"Совет:"," Для отладки сложных расписаний используйте ",[42,503,504],{},"systemd-analyze calendar"," для проверки синтаксиса:",[85,507,509],{"className":214,"code":508,"language":216,"meta":90,"style":90},"systemd-analyze calendar \"*-*-* 02:00:00\"\n",[42,510,511],{"__ignoreMap":90},[94,512,513,516,519],{"class":96,"line":97},[94,514,515],{"class":223},"systemd-analyze",[94,517,518],{"class":227}," calendar",[94,520,521],{"class":227}," \"*-*-* 02:00:00\"\n",[21,523,524,525,527,528,531,532,535],{},"Если вы используете пользовательские таймеры (в ",[42,526,44],{},"), убедитесь, что вы запустили ",[42,529,530],{},"systemd --user"," и включили таймер с помощью ",[42,533,534],{},"systemctl --user",".",[479,537,538],{},[21,539,483,540,542,543,546,547,550],{},[485,541,487],{}," Таймеры, настроенные с ",[42,544,545],{},"Persistent=true",", будут запускаться после перезагрузки системы, в то время как ",[42,548,549],{},"Persistent=false"," — нет. Выберите параметр в зависимости от того, нужно ли вам запускать задачу после перезагрузки.",[552,553,554],"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":90,"searchDepth":103,"depth":103,"links":556},[557,558,559,567,568],{"id":18,"depth":103,"text":19},{"id":29,"depth":103,"text":30},{"id":70,"depth":103,"text":71,"children":560},[561,562,563,564,565,566],{"id":75,"depth":109,"text":76},{"id":146,"depth":109,"text":147},{"id":207,"depth":109,"text":208},{"id":257,"depth":109,"text":258},{"id":315,"depth":109,"text":316},{"id":369,"depth":109,"text":370},{"id":424,"depth":103,"text":425},{"id":476,"depth":103,"text":477},null,"2026-08-08 17:32:32","Узнайте, как настраивать cron-задачи с помощью systemd timers. Пошаговая инструкция с примерами для Ubuntu, Fedora и других дистрибутивов Linux, чтобы автоматизировать выполнение скриптов.","medium",false,"10-15 мин","md",[577,580,583,586],{"answer":578,"question":579},"Создайте unit-файл для скрипта и таймер-файл с параметром OnCalendar, затем включите и запустите таймер.","Как создать простой таймер с помощью systemd?",{"answer":581,"question":582},"Systemd таймеры используют менеджер systemd и более гибкую модель активации, основанную на событиях, в то время как cron работает по строгому расписанию.","В чем разница между systemd timer и cron?",{"answer":584,"question":585},"Используйте `systemctl status \u003Ctimer>` и `systemctl list-timers --all`, чтобы увидеть запланированные запуски.","Как проверить состояние таймера?",{"answer":587,"question":588},"Добавьте параметр `OnBootSec=5min` в таймер-файл, чтобы отложить первый запуск после загрузки системы.","Как настроить таймер с задержкой запуска?",[590,593,596,599,602],{"name":591,"text":592},"Создайте unit-файл","Опишите службу, которая будет вызвана таймером, с помощью `ExecStart`.",{"name":594,"text":595},"Создайте таймер-файл","Определите расписание с помощью `OnCalendar` или других таймерных параметров.",{"name":597,"text":598},"Включите и запустите таймер","Перезагрузите daemon, включите таймер и запустите его немедленно.",{"name":600,"text":601},"Проверьте состояние таймера","Проверьте статус таймера и списка запланированных таймеров.",{"name":603,"text":604},"Настройте периодичность с помощью календаря","Измените `OnCalendar`, чтобы настроить нужную частоту запуска.","PT15M",[607,608,609,610,611,612,613,614,615],"systemd timers","таймер systemd","крон systemd","настройка таймеров systemd","unit-файл systemd","timer-файл systemd","как создать таймер systemd","systemd timers ubuntu","systemd timers fedora","ru_RU",{},"/guides/linux/systemd-timers-explained","linux",[621,622,623],"/guides/linux/systemd-units-explained","/guides/linux/cron-explained","/guides/linux/systemd-services-explained","Гайды Linux",{"title":5,"description":571},"guides/linux/systemd-timers-explained","В этом руководстве вы узнаете, что такое systemd timers, как они отличаются от cron, и как создать пользовательский таймер для автоматического выполнения скриптов. После выполнения инструкции вы сможете настраивать периодические задачи с помощью Systemd.",[629,630,631,632,633,634],"systemd","Linux","автоматизация","таймеры","cron","unit","guide","AJhkRo0919K6O9ejKJhX4rIykpZbSWv6T5i4ueM95_Q",{"data":638,"body":639},{},{"type":640,"children":641},"root",[642],{"type":643,"tag":21,"props":644,"children":645},"element",{},[646],{"type":647,"value":578},"text",{"data":649,"body":650},{},{"type":640,"children":651},[652],{"type":643,"tag":21,"props":653,"children":654},{},[655],{"type":647,"value":581},{"data":657,"body":658},{},{"type":640,"children":659},[660],{"type":643,"tag":21,"props":661,"children":662},{},[663,665,671,673,679],{"type":647,"value":664},"Используйте ",{"type":643,"tag":42,"props":666,"children":668},{"className":667},[],[669],{"type":647,"value":670},"systemctl status \u003Ctimer>",{"type":647,"value":672}," и ",{"type":643,"tag":42,"props":674,"children":676},{"className":675},[],[677],{"type":647,"value":678},"systemctl list-timers --all",{"type":647,"value":680},", чтобы увидеть запланированные запуски.",{"data":682,"body":683},{},{"type":640,"children":684},[685],{"type":643,"tag":21,"props":686,"children":687},{},[688,690,696],{"type":647,"value":689},"Добавьте параметр ",{"type":643,"tag":42,"props":691,"children":693},{"className":692},[],[694],{"type":647,"value":695},"OnBootSec=5min",{"type":647,"value":697}," в таймер-файл, чтобы отложить первый запуск после загрузки системы.",{"data":699,"body":700},{},{"type":640,"children":701},[702],{"type":643,"tag":21,"props":703,"children":704},{},[705,707,712],{"type":647,"value":706},"Опишите службу, которая будет вызвана таймером, с помощью ",{"type":643,"tag":42,"props":708,"children":710},{"className":709},[],[711],{"type":647,"value":491},{"type":647,"value":535},{"data":714,"body":715},{},{"type":640,"children":716},[717],{"type":643,"tag":21,"props":718,"children":719},{},[720,722,727],{"type":647,"value":721},"Определите расписание с помощью ",{"type":643,"tag":42,"props":723,"children":725},{"className":724},[],[726],{"type":647,"value":322},{"type":647,"value":728}," или других таймерных параметров.",{"data":730,"body":731},{},{"type":640,"children":732},[733],{"type":643,"tag":21,"props":734,"children":735},{},[736],{"type":647,"value":598},{"data":738,"body":739},{},{"type":640,"children":740},[741],{"type":643,"tag":21,"props":742,"children":743},{},[744],{"type":647,"value":601},{"data":746,"body":747},{},{"type":640,"children":748},[749],{"type":643,"tag":21,"props":750,"children":751},{},[752,754,759],{"type":647,"value":753},"Измените ",{"type":643,"tag":42,"props":755,"children":757},{"className":756},[],[758],{"type":647,"value":322},{"type":647,"value":760},", чтобы настроить нужную частоту запуска.",[762],{"id":763,"title":764,"appliesTo":765,"author":11,"body":770,"canonical":569,"code":569,"createdAt":2114,"description":2115,"difficulty":572,"draft":573,"estimatedTime":2116,"extension":575,"faq":2117,"howToSteps":2130,"howToTotalTime":2146,"image":569,"keywords":2147,"locale":616,"meta":2158,"navigation":118,"path":623,"platform":619,"related":2159,"section":624,"seo":2162,"severity":569,"stem":2163,"summary":2164,"tags":2165,"twitterCreator":569,"twitterSite":569,"type":635,"updatedAt":2114,"__hash__":2170},"content_ru/guides/linux/systemd-services-explained.md","Systemd Services: Полное руководство по управлению службами Linux",[766,767,768,769],"Ubuntu 16.04+","Debian 8+","CentOS 7+","Fedora 25+",{"type":13,"value":771,"toc":2081},[772,774,777,780,799,801,849,852,856,859,863,932,936,1014,1030,1032,1036,1041,1045,1189,1193,1270,1272,1274,1278,1281,1285,1291,1338,1341,1359,1363,1369,1439,1444,1476,1480,1554,1558,1600,1602,1606,1610,1613,1633,1636,1648,1651,1668,1672,1679,1699,1702,1726,1728,1730,1789,1791,1793,1801,1839,1843,1863,1867,1918,1922,1942,1946,1975,1979,2014,2016,2020,2075,2078],[16,773,19],{"id":18},[21,775,776],{},"Systemd — это современная система инициализации и менеджер служб для большинства Linux-дистрибутивов (Ubuntu, Debian, CentOS, Fedora). Понимание systemd services критически важно для администрирования серверов, настройки автоматизации и диагностики проблем.",[21,778,779],{},"После прохождения этого гайда вы сможете:",[32,781,782,788,793,796],{},[35,783,784,785],{},"Управлять встроенными и пользовательскими службами через ",[42,786,787],{},"systemctl",[35,789,790,791],{},"Читать и анализировать логи через ",[42,792,438],{},[35,794,795],{},"Создавать, включать и отключать службы",[35,797,798],{},"Диагностировать типичные ошибки запуска",[16,800,30],{"id":29},[802,803,804,814,822,828],"ol",{},[35,805,806,809,810,813],{},[485,807,808],{},"Операционная система",": Linux с systemd (проверьте: ",[42,811,812],{},"pidof systemd"," должен вернуть PID).",[35,815,816,819,820,60],{},[485,817,818],{},"Права доступа",": Для управления системными службами требуются права root (используйте ",[42,821,224],{},[35,823,824,827],{},[485,825,826],{},"Базовые знания",": Умение работать с терминалом, редактировать файлы (nano/vim), понимать структуру каталогов Linux.",[35,829,830,833,834,836,837,836,839,836,842,836,845,848],{},[485,831,832],{},"Рекомендуемые утилиты",": ",[42,835,787],{},", ",[42,838,438],{},[42,840,841],{},"cat",[42,843,844],{},"less",[42,846,847],{},"grep"," (все предустановлены).",[850,851],"hr",{},[16,853,855],{"id":854},"основные-команды-для-управления-службами","Основные команды для управления службами",[21,857,858],{},"Systemctl — основной инструмент взаимодействия с systemd. Вот ключевые операции:",[73,860,862],{"id":861},"просмотр-списка-служб","Просмотр списка служб",[85,864,866],{"className":214,"code":865,"language":216,"meta":90,"style":90},"# Все активные службы\nsystemctl list-units --type=service --state=running\n\n# Все службы (включая неактивные)\nsystemctl list-unit-files --type=service\n\n# Фильтрация по имени\nsystemctl list-units --type=service | grep nginx\n",[42,867,868,873,886,890,895,905,909,914],{"__ignoreMap":90},[94,869,870],{"class":96,"line":97},[94,871,872],{"class":271},"# Все активные службы\n",[94,874,875,877,880,883],{"class":96,"line":103},[94,876,787],{"class":223},[94,878,879],{"class":227}," list-units",[94,881,882],{"class":304}," --type=service",[94,884,885],{"class":304}," --state=running\n",[94,887,888],{"class":96,"line":109},[94,889,119],{"emptyLinePlaceholder":118},[94,891,892],{"class":96,"line":115},[94,893,894],{"class":271},"# Все службы (включая неактивные)\n",[94,896,897,899,902],{"class":96,"line":122},[94,898,787],{"class":223},[94,900,901],{"class":227}," list-unit-files",[94,903,904],{"class":304}," --type=service\n",[94,906,907],{"class":96,"line":128},[94,908,119],{"emptyLinePlaceholder":118},[94,910,911],{"class":96,"line":134},[94,912,913],{"class":271},"# Фильтрация по имени\n",[94,915,916,918,920,922,926,929],{"class":96,"line":140},[94,917,787],{"class":223},[94,919,879],{"class":227},[94,921,882],{"class":304},[94,923,925],{"class":924},"szBVR"," |",[94,927,928],{"class":223}," grep",[94,930,931],{"class":227}," nginx\n",[73,933,935],{"id":934},"управление-состоянием-службы","Управление состоянием службы",[85,937,939],{"className":214,"code":938,"language":216,"meta":90,"style":90},"# Запуск/остановка/перезагрузка\nsudo systemctl start имя_службы.service\nsudo systemctl stop имя_службы.service\nsudo systemctl restart имя_службы.service\n\n# Перезагрузка с reread конфигов (без остановки)\nsudo systemctl reload имя_службы.service\n\n# Проверка статуса\nsystemctl status имя_службы.service\n",[42,940,941,946,957,967,977,981,986,997,1001,1006],{"__ignoreMap":90},[94,942,943],{"class":96,"line":97},[94,944,945],{"class":271},"# Запуск/остановка/перезагрузка\n",[94,947,948,950,952,954],{"class":96,"line":103},[94,949,224],{"class":223},[94,951,228],{"class":227},[94,953,252],{"class":227},[94,955,956],{"class":227}," имя_службы.service\n",[94,958,959,961,963,965],{"class":96,"line":109},[94,960,224],{"class":223},[94,962,228],{"class":227},[94,964,398],{"class":227},[94,966,956],{"class":227},[94,968,969,971,973,975],{"class":96,"line":115},[94,970,224],{"class":223},[94,972,228],{"class":227},[94,974,364],{"class":227},[94,976,956],{"class":227},[94,978,979],{"class":96,"line":122},[94,980,119],{"emptyLinePlaceholder":118},[94,982,983],{"class":96,"line":128},[94,984,985],{"class":271},"# Перезагрузка с reread конфигов (без остановки)\n",[94,987,988,990,992,995],{"class":96,"line":134},[94,989,224],{"class":223},[94,991,228],{"class":227},[94,993,994],{"class":227}," reload",[94,996,956],{"class":227},[94,998,999],{"class":96,"line":140},[94,1000,119],{"emptyLinePlaceholder":118},[94,1002,1003],{"class":96,"line":195},[94,1004,1005],{"class":271},"# Проверка статуса\n",[94,1007,1008,1010,1012],{"class":96,"line":201},[94,1009,787],{"class":223},[94,1011,281],{"class":227},[94,1013,956],{"class":227},[479,1015,1016],{},[21,1017,1018,1019,1022,1023,1026,1027,535],{},"💡 Совет: Имя службы можно не указывать с расширением ",[42,1020,1021],{},".service"," — systemd добавит его автоматически: ",[42,1024,1025],{},"systemctl status nginx"," вместо ",[42,1028,1029],{},"nginx.service",[850,1031],{},[16,1033,1035],{"id":1034},"просмотр-логов-служб-journalctl","Просмотр логов служб (journalctl)",[21,1037,1038,1039,535],{},"Systemd хранит логи в бинарном журнале, доступном через ",[42,1040,438],{},[73,1042,1044],{"id":1043},"основые-сценарии-использования","Основые сценарии использования",[85,1046,1048],{"className":214,"code":1047,"language":216,"meta":90,"style":90},"# Логи конкретной службы\nsudo journalctl -u nginx.service\n\n# Логи за последний час\nsudo journalctl -u nginx.service --since \"1 hour ago\"\n\n# Отслеживание в реальном времени (как tail -f)\nsudo journalctl -u nginx.service -f\n\n# Фильтрация по приоритету (err, warning, info)\nsudo journalctl -u nginx.service -p err\n\n# Логи с момента последней перезагрузки\nsudo journalctl -u nginx.service -b\n\n# Очистка журнала (если занял много места)\nsudo journalctl --vacuum-time=3d  # оставить логи за 3 дня\n",[42,1049,1050,1055,1067,1071,1076,1093,1097,1102,1114,1118,1123,1140,1145,1151,1165,1170,1176],{"__ignoreMap":90},[94,1051,1052],{"class":96,"line":97},[94,1053,1054],{"class":271},"# Логи конкретной службы\n",[94,1056,1057,1059,1062,1064],{"class":96,"line":103},[94,1058,224],{"class":223},[94,1060,1061],{"class":227}," journalctl",[94,1063,441],{"class":304},[94,1065,1066],{"class":227}," nginx.service\n",[94,1068,1069],{"class":96,"line":109},[94,1070,119],{"emptyLinePlaceholder":118},[94,1072,1073],{"class":96,"line":115},[94,1074,1075],{"class":271},"# Логи за последний час\n",[94,1077,1078,1080,1082,1084,1087,1090],{"class":96,"line":122},[94,1079,224],{"class":223},[94,1081,1061],{"class":227},[94,1083,441],{"class":304},[94,1085,1086],{"class":227}," nginx.service",[94,1088,1089],{"class":304}," --since",[94,1091,1092],{"class":227}," \"1 hour ago\"\n",[94,1094,1095],{"class":96,"line":128},[94,1096,119],{"emptyLinePlaceholder":118},[94,1098,1099],{"class":96,"line":134},[94,1100,1101],{"class":271},"# Отслеживание в реальном времени (как tail -f)\n",[94,1103,1104,1106,1108,1110,1112],{"class":96,"line":140},[94,1105,224],{"class":223},[94,1107,1061],{"class":227},[94,1109,441],{"class":304},[94,1111,1086],{"class":227},[94,1113,447],{"class":304},[94,1115,1116],{"class":96,"line":195},[94,1117,119],{"emptyLinePlaceholder":118},[94,1119,1120],{"class":96,"line":201},[94,1121,1122],{"class":271},"# Фильтрация по приоритету (err, warning, info)\n",[94,1124,1126,1128,1130,1132,1134,1137],{"class":96,"line":1125},11,[94,1127,224],{"class":223},[94,1129,1061],{"class":227},[94,1131,441],{"class":304},[94,1133,1086],{"class":227},[94,1135,1136],{"class":304}," -p",[94,1138,1139],{"class":227}," err\n",[94,1141,1143],{"class":96,"line":1142},12,[94,1144,119],{"emptyLinePlaceholder":118},[94,1146,1148],{"class":96,"line":1147},13,[94,1149,1150],{"class":271},"# Логи с момента последней перезагрузки\n",[94,1152,1154,1156,1158,1160,1162],{"class":96,"line":1153},14,[94,1155,224],{"class":223},[94,1157,1061],{"class":227},[94,1159,441],{"class":304},[94,1161,1086],{"class":227},[94,1163,1164],{"class":304}," -b\n",[94,1166,1168],{"class":96,"line":1167},15,[94,1169,119],{"emptyLinePlaceholder":118},[94,1171,1173],{"class":96,"line":1172},16,[94,1174,1175],{"class":271},"# Очистка журнала (если занял много места)\n",[94,1177,1179,1181,1183,1186],{"class":96,"line":1178},17,[94,1180,224],{"class":223},[94,1182,1061],{"class":227},[94,1184,1185],{"class":304}," --vacuum-time=3d",[94,1187,1188],{"class":271},"  # оставить логи за 3 дня\n",[73,1190,1192],{"id":1191},"поиск-проблем","Поиск проблем",[85,1194,1196],{"className":214,"code":1195,"language":216,"meta":90,"style":90},"# Найти ошибки в логах всех служб\nsudo journalctl -p err --since today\n\n# Показать последние 50 строк лога nginx\nsudo journalctl -u nginx -n 50\n\n# Экспорт логов в файл\nsudo journalctl -u nginx > nginx_logs.txt\n",[42,1197,1198,1203,1219,1223,1228,1245,1249,1254],{"__ignoreMap":90},[94,1199,1200],{"class":96,"line":97},[94,1201,1202],{"class":271},"# Найти ошибки в логах всех служб\n",[94,1204,1205,1207,1209,1211,1214,1216],{"class":96,"line":103},[94,1206,224],{"class":223},[94,1208,1061],{"class":227},[94,1210,1136],{"class":304},[94,1212,1213],{"class":227}," err",[94,1215,1089],{"class":304},[94,1217,1218],{"class":227}," today\n",[94,1220,1221],{"class":96,"line":109},[94,1222,119],{"emptyLinePlaceholder":118},[94,1224,1225],{"class":96,"line":115},[94,1226,1227],{"class":271},"# Показать последние 50 строк лога nginx\n",[94,1229,1230,1232,1234,1236,1239,1242],{"class":96,"line":122},[94,1231,224],{"class":223},[94,1233,1061],{"class":227},[94,1235,441],{"class":304},[94,1237,1238],{"class":227}," nginx",[94,1240,1241],{"class":304}," -n",[94,1243,1244],{"class":304}," 50\n",[94,1246,1247],{"class":96,"line":128},[94,1248,119],{"emptyLinePlaceholder":118},[94,1250,1251],{"class":96,"line":134},[94,1252,1253],{"class":271},"# Экспорт логов в файл\n",[94,1255,1256,1258,1260,1262,1264,1267],{"class":96,"line":140},[94,1257,224],{"class":223},[94,1259,1061],{"class":227},[94,1261,441],{"class":304},[94,1263,1238],{"class":227},[94,1265,1266],{"class":924}," >",[94,1268,1269],{"class":227}," nginx_logs.txt\n",[850,1271],{},[420,1273],{},[16,1275,1277],{"id":1276},"создание-собственной-службы-systemd","Создание собственной службы systemd",[21,1279,1280],{},"Давайте создадим службу для запуска пользовательского скрипта.",[73,1282,1284],{"id":1283},"шаг-1-подготовьте-скрипт","Шаг 1: Подготовьте скрипт",[21,1286,1287,1288],{},"Создайте скрипт, который будет выполняться. Пример: ",[42,1289,1290],{},"/opt/myscript.sh",[85,1292,1294],{"className":214,"code":1293,"language":216,"meta":90,"style":90},"#!/bin/bash\n# Пример скрипта, который пишет в лог каждую минуту\nLOG_FILE=\"/var/log/myscript.log\"\necho \"$(date): myscript запущен\" >> $LOG_FILE\n",[42,1295,1296,1301,1306,1318],{"__ignoreMap":90},[94,1297,1298],{"class":96,"line":97},[94,1299,1300],{"class":271},"#!/bin/bash\n",[94,1302,1303],{"class":96,"line":103},[94,1304,1305],{"class":271},"# Пример скрипта, который пишет в лог каждую минуту\n",[94,1307,1308,1312,1315],{"class":96,"line":109},[94,1309,1311],{"class":1310},"sVt8B","LOG_FILE",[94,1313,1314],{"class":924},"=",[94,1316,1317],{"class":227},"\"/var/log/myscript.log\"\n",[94,1319,1320,1323,1326,1329,1332,1335],{"class":96,"line":115},[94,1321,1322],{"class":304},"echo",[94,1324,1325],{"class":227}," \"$(",[94,1327,1328],{"class":223},"date",[94,1330,1331],{"class":227},"): myscript запущен\"",[94,1333,1334],{"class":924}," >>",[94,1336,1337],{"class":1310}," $LOG_FILE\n",[21,1339,1340],{},"Дайте права на выполнение:",[85,1342,1344],{"className":214,"code":1343,"language":216,"meta":90,"style":90},"sudo chmod +x /opt/myscript.sh\n",[42,1345,1346],{"__ignoreMap":90},[94,1347,1348,1350,1353,1356],{"class":96,"line":97},[94,1349,224],{"class":223},[94,1351,1352],{"class":227}," chmod",[94,1354,1355],{"class":227}," +x",[94,1357,1358],{"class":227}," /opt/myscript.sh\n",[73,1360,1362],{"id":1361},"шаг-2-создайте-unit-файл","Шаг 2: Создайте unit-файл",[21,1364,1365,1366,83],{},"Создайте файл ",[42,1367,1368],{},"/etc/systemd/system/myscript.service",[85,1370,1372],{"className":87,"code":1371,"language":89,"meta":90,"style":90},"[Unit]\nDescription=Моя пользовательская служба\nAfter=network.target\n\n[Service]\nType=simple\nExecStart=/opt/myscript.sh\nRestart=on-failure\nRestartSec=10\nUser=root\nGroup=root\n\n[Install]\nWantedBy=multi-user.target\n",[42,1373,1374,1378,1383,1388,1392,1396,1401,1406,1411,1416,1421,1426,1430,1434],{"__ignoreMap":90},[94,1375,1376],{"class":96,"line":97},[94,1377,106],{},[94,1379,1380],{"class":96,"line":103},[94,1381,1382],{},"Description=Моя пользовательская служба\n",[94,1384,1385],{"class":96,"line":109},[94,1386,1387],{},"After=network.target\n",[94,1389,1390],{"class":96,"line":115},[94,1391,119],{"emptyLinePlaceholder":118},[94,1393,1394],{"class":96,"line":122},[94,1395,125],{},[94,1397,1398],{"class":96,"line":128},[94,1399,1400],{},"Type=simple\n",[94,1402,1403],{"class":96,"line":134},[94,1404,1405],{},"ExecStart=/opt/myscript.sh\n",[94,1407,1408],{"class":96,"line":140},[94,1409,1410],{},"Restart=on-failure\n",[94,1412,1413],{"class":96,"line":195},[94,1414,1415],{},"RestartSec=10\n",[94,1417,1418],{"class":96,"line":201},[94,1419,1420],{},"User=root\n",[94,1422,1423],{"class":96,"line":1125},[94,1424,1425],{},"Group=root\n",[94,1427,1428],{"class":96,"line":1142},[94,1429,119],{"emptyLinePlaceholder":118},[94,1431,1432],{"class":96,"line":1147},[94,1433,198],{},[94,1435,1436],{"class":96,"line":1153},[94,1437,1438],{},"WantedBy=multi-user.target\n",[21,1440,1441],{},[485,1442,1443],{},"Объяснение параметров:",[32,1445,1446,1452,1458,1464,1470],{},[35,1447,1448,1451],{},[42,1449,1450],{},"After=network.target"," — запуск после сети.",[35,1453,1454,1457],{},[42,1455,1456],{},"Type=simple"," (по умолчанию) — процесс запускается напрямую.",[35,1459,1460,1463],{},[42,1461,1462],{},"Restart=on-failure"," — перезапускать при падении.",[35,1465,1466,1469],{},[42,1467,1468],{},"RestartSec=10"," — ждать 10 секунд перед перезапуском.",[35,1471,1472,1475],{},[42,1473,1474],{},"WantedBy=multi-user.target"," — цель для автозагрузки (многопользовательский режим).",[73,1477,1479],{"id":1478},"шаг-3-активируйте-службу","Шаг 3: Активируйте службу",[85,1481,1483],{"className":214,"code":1482,"language":216,"meta":90,"style":90},"# Перезагрузить конфигурацию systemd\nsudo systemctl daemon-reload\n\n# Запустить сейчас\nsudo systemctl start myscript.service\n\n# Включить на автозагрузку\nsudo systemctl enable myscript.service\n\n# Проверить статус\nsystemctl status myscript.service\n",[42,1484,1485,1490,1498,1502,1507,1518,1522,1527,1537,1541,1546],{"__ignoreMap":90},[94,1486,1487],{"class":96,"line":97},[94,1488,1489],{"class":271},"# Перезагрузить конфигурацию systemd\n",[94,1491,1492,1494,1496],{"class":96,"line":103},[94,1493,224],{"class":223},[94,1495,228],{"class":227},[94,1497,231],{"class":227},[94,1499,1500],{"class":96,"line":109},[94,1501,119],{"emptyLinePlaceholder":118},[94,1503,1504],{"class":96,"line":115},[94,1505,1506],{"class":271},"# Запустить сейчас\n",[94,1508,1509,1511,1513,1515],{"class":96,"line":122},[94,1510,224],{"class":223},[94,1512,228],{"class":227},[94,1514,252],{"class":227},[94,1516,1517],{"class":227}," myscript.service\n",[94,1519,1520],{"class":96,"line":128},[94,1521,119],{"emptyLinePlaceholder":118},[94,1523,1524],{"class":96,"line":134},[94,1525,1526],{"class":271},"# Включить на автозагрузку\n",[94,1528,1529,1531,1533,1535],{"class":96,"line":140},[94,1530,224],{"class":223},[94,1532,228],{"class":227},[94,1534,240],{"class":227},[94,1536,1517],{"class":227},[94,1538,1539],{"class":96,"line":195},[94,1540,119],{"emptyLinePlaceholder":118},[94,1542,1543],{"class":96,"line":201},[94,1544,1545],{"class":271},"# Проверить статус\n",[94,1547,1548,1550,1552],{"class":96,"line":1125},[94,1549,787],{"class":223},[94,1551,281],{"class":227},[94,1553,1517],{"class":227},[73,1555,1557],{"id":1556},"шаг-4-проверьте-работу","Шаг 4: Проверьте работу",[85,1559,1561],{"className":214,"code":1560,"language":216,"meta":90,"style":90},"# Логи службы\nsudo journalctl -u myscript.service -f\n\n# Файл, который создаёт скрипт\nsudo cat /var/log/myscript.log\n",[42,1562,1563,1568,1581,1585,1590],{"__ignoreMap":90},[94,1564,1565],{"class":96,"line":97},[94,1566,1567],{"class":271},"# Логи службы\n",[94,1569,1570,1572,1574,1576,1579],{"class":96,"line":103},[94,1571,224],{"class":223},[94,1573,1061],{"class":227},[94,1575,441],{"class":304},[94,1577,1578],{"class":227}," myscript.service",[94,1580,447],{"class":304},[94,1582,1583],{"class":96,"line":109},[94,1584,119],{"emptyLinePlaceholder":118},[94,1586,1587],{"class":96,"line":115},[94,1588,1589],{"class":271},"# Файл, который создаёт скрипт\n",[94,1591,1592,1594,1597],{"class":96,"line":122},[94,1593,224],{"class":223},[94,1595,1596],{"class":227}," cat",[94,1598,1599],{"class":227}," /var/log/myscript.log\n",[850,1601],{},[16,1603,1605],{"id":1604},"управление-автозагрузкой-и-зависимостями","Управление автозагрузкой и зависимостями",[73,1607,1609],{"id":1608},"цели-targets-systemd","Цели (targets) systemd",[21,1611,1612],{},"Аналог runlevels в SysVinit:",[32,1614,1615,1621,1627],{},[35,1616,1617,1620],{},[42,1618,1619],{},"multi-user.target"," — многопользовательский режим (без GUI).",[35,1622,1623,1626],{},[42,1624,1625],{},"graphical.target"," — с графическим интерфейсом.",[35,1628,1629,1632],{},[42,1630,1631],{},"rescue.target"," — аварийный режим.",[21,1634,1635],{},"Узнайте текущую цель:",[85,1637,1639],{"className":214,"code":1638,"language":216,"meta":90,"style":90},"systemctl get-default\n",[42,1640,1641],{"__ignoreMap":90},[94,1642,1643,1645],{"class":96,"line":97},[94,1644,787],{"class":223},[94,1646,1647],{"class":227}," get-default\n",[21,1649,1650],{},"Измените цель (например, переключиться в графический режим):",[85,1652,1654],{"className":214,"code":1653,"language":216,"meta":90,"style":90},"sudo systemctl set-default graphical.target\n",[42,1655,1656],{"__ignoreMap":90},[94,1657,1658,1660,1662,1665],{"class":96,"line":97},[94,1659,224],{"class":223},[94,1661,228],{"class":227},[94,1663,1664],{"class":227}," set-default",[94,1666,1667],{"class":227}," graphical.target\n",[73,1669,1671],{"id":1670},"зависимости-между-службами","Зависимости между службами",[21,1673,1674,1675,1678],{},"В секции ",[42,1676,1677],{},"[Unit]"," можно указать:",[85,1680,1682],{"className":87,"code":1681,"language":89,"meta":90,"style":90},"Requires=nginx.service    # Требует запуска nginx\nAfter=nginx.service       # Запускать после nginx\nWants=nginx.service       # Желательно запустить nginx (необязательно)\n",[42,1683,1684,1689,1694],{"__ignoreMap":90},[94,1685,1686],{"class":96,"line":97},[94,1687,1688],{},"Requires=nginx.service    # Требует запуска nginx\n",[94,1690,1691],{"class":96,"line":103},[94,1692,1693],{},"After=nginx.service       # Запускать после nginx\n",[94,1695,1696],{"class":96,"line":109},[94,1697,1698],{},"Wants=nginx.service       # Желательно запустить nginx (необязательно)\n",[21,1700,1701],{},"Пример для веб-приложения, зависящего от базы данных:",[85,1703,1705],{"className":87,"code":1704,"language":89,"meta":90,"style":90},"[Unit]\nDescription=My Web App\nRequires=postgresql.service\nAfter=postgresql.service\n",[42,1706,1707,1711,1716,1721],{"__ignoreMap":90},[94,1708,1709],{"class":96,"line":97},[94,1710,106],{},[94,1712,1713],{"class":96,"line":103},[94,1714,1715],{},"Description=My Web App\n",[94,1717,1718],{"class":96,"line":109},[94,1719,1720],{},"Requires=postgresql.service\n",[94,1722,1723],{"class":96,"line":115},[94,1724,1725],{},"After=postgresql.service\n",[850,1727],{},[16,1729,425],{"id":424},[802,1731,1732,1744,1756,1771,1780],{},[35,1733,1734,833,1737,1740,1741,535],{},[485,1735,1736],{},"Статус службы",[42,1738,1739],{},"systemctl status имя_службы"," должен показывать ",[42,1742,1743],{},"active (running)",[35,1745,1746,833,1749,1752,1753,535],{},[485,1747,1748],{},"Автозагрузка",[42,1750,1751],{},"systemctl is-enabled имя_службы"," → ",[42,1754,1755],{},"enabled",[35,1757,1758,833,1761,1764,1765,56,1768,535],{},[485,1759,1760],{},"Логи",[42,1762,1763],{},"journalctl -u имя_службы"," не содержит ошибок ",[42,1766,1767],{},"Failed",[42,1769,1770],{},"timeout",[35,1772,1773,833,1776,1779],{},[485,1774,1775],{},"Процесс",[42,1777,1778],{},"ps aux | grep имя_скрипта"," показывает запущенный процесс.",[35,1781,1782,1785,1786,60],{},[485,1783,1784],{},"Функциональность",": Если служба предоставляет сервис (веб-сервер, БД), проверьте его доступность (например, ",[42,1787,1788],{},"curl http://localhost",[850,1790],{},[16,1792,477],{"id":476},[73,1794,1796,1797,1800],{"id":1795},"_1-служба-не-запускается-systemctl-start-молчалив","1. Служба не запускается: ",[42,1798,1799],{},"systemctl start"," молчалив",[32,1802,1803,1809],{},[35,1804,1805,1808],{},[485,1806,1807],{},"Причина",": Ошибка в unit-файле или скрипте.",[35,1810,1811,1814,1815,672,1818,1821,1822],{},[485,1812,1813],{},"Решение",": Проверьте ",[42,1816,1817],{},"journalctl -u служба -b",[42,1819,1820],{},"systemctl status служба",". Частые ошибки:\n",[32,1823,1824,1830,1836],{},[35,1825,1826,1827,1829],{},"Неправильный путь в ",[42,1828,491],{}," (используйте абсолютный путь).",[35,1831,1832,1833,60],{},"Нет прав на скрипт (",[42,1834,1835],{},"chmod +x",[35,1837,1838],{},"Порт уже занят (для сетевых служб).",[73,1840,1842],{"id":1841},"_2-служба-запускается-но-сразу-падает","2. Служба запускается, но сразу падает",[32,1844,1845,1850],{},[35,1846,1847,1849],{},[485,1848,1807],{},": Скрипт завершается с ошибкой.",[35,1851,1852,1854,1855,1858,1859,1862],{},[485,1853,1813],{},": Добавьте ",[42,1856,1857],{},"Type=oneshot"," + ",[42,1860,1861],{},"RemainAfterExit=yes"," для одноразовых задач, или убедитесь, что скрипт не завершается (демонизируйте его). Проверьте переменные окружения — systemd может не передавать PATH.",[73,1864,1866],{"id":1865},"_3-ошибка-permissions-при-создании-unit-файла","3. Ошибка permissions при создании unit-файла",[32,1868,1869,1874],{},[35,1870,1871,1873],{},[485,1872,1807],{},": Файл создан не от root или с неправильными правами.",[35,1875,1876,1878,1879],{},[485,1877,1813],{},":\n",[85,1880,1882],{"className":214,"code":1881,"language":216,"meta":90,"style":90},"sudo chown root:root /etc/systemd/system/*.service\nsudo chmod 644 /etc/systemd/system/*.service\n",[42,1883,1884,1903],{"__ignoreMap":90},[94,1885,1886,1888,1891,1894,1897,1900],{"class":96,"line":97},[94,1887,224],{"class":223},[94,1889,1890],{"class":227}," chown",[94,1892,1893],{"class":227}," root:root",[94,1895,1896],{"class":227}," /etc/systemd/system/",[94,1898,1899],{"class":304},"*",[94,1901,1902],{"class":227},".service\n",[94,1904,1905,1907,1909,1912,1914,1916],{"class":96,"line":103},[94,1906,224],{"class":223},[94,1908,1352],{"class":227},[94,1910,1911],{"class":304}," 644",[94,1913,1896],{"class":227},[94,1915,1899],{"class":304},[94,1917,1902],{"class":227},[73,1919,1921],{"id":1920},"_4-логи-journalctl-пустые-для-службы","4. Логи journalctl пустые для службы",[32,1923,1924,1933],{},[35,1925,1926,1928,1929,1932],{},[485,1927,1807],{},": Служба не пишет в stdout/stderr, или используется ",[42,1930,1931],{},"syslog"," вместо journald.",[35,1934,1935,1937,1938,1941],{},[485,1936,1813],{},": Убедитесь, что скрипт выводит в консоль (echo, print). Если используется внешний логгер (например, nginx пишет в ",[42,1939,1940],{},"/var/log/nginx","), смотрите его логи напрямую.",[73,1943,1945],{"id":1944},"_5-зависимости-не-срабатывают","5. Зависимости не срабатывают",[32,1947,1948,1960],{},[35,1949,1950,1952,1953,1956,1957,535],{},[485,1951,1807],{},": Некорректный target в ",[42,1954,1955],{},"WantedBy","/",[42,1958,1959],{},"Requires",[35,1961,1962,1964,1965,1968,1969,1971,1972,1974],{},[485,1963,1813],{},": Проверьте существование цели: ",[42,1966,1967],{},"systemctl list-units --type=target",". Используйте ",[42,1970,1619],{}," для фоновых служб, ",[42,1973,1625],{}," для GUI-приложений.",[73,1976,1978],{"id":1977},"_6-служба-не-включается-на-автозагрузку","6. Служба не включается на автозагрузку",[32,1980,1981,1992],{},[35,1982,1983,1985,1986,1989,1990,535],{},[485,1984,1807],{},": Отсутствует секция ",[42,1987,1988],{},"[Install]"," с ",[42,1991,1955],{},[35,1993,1994,1996,1997,2010,2011,535],{},[485,1995,1813],{},": Добавьте в unit-файл:\n",[85,1998,2000],{"className":87,"code":1999,"language":89,"meta":90,"style":90},"[Install]\nWantedBy=multi-user.target\n",[42,2001,2002,2006],{"__ignoreMap":90},[94,2003,2004],{"class":96,"line":97},[94,2005,198],{},[94,2007,2008],{"class":96,"line":103},[94,2009,1438],{},"\nЗатем ",[42,2012,2013],{},"sudo systemctl daemon-reload && sudo systemctl enable служба",[850,2015],{},[16,2017,2019],{"id":2018},"дополнительные-ресурсы","Дополнительные ресурсы",[32,2021,2022,2039,2050,2059],{},[35,2023,2024,833,2027,836,2030,836,2033,836,2036,535],{},[485,2025,2026],{},"Man-страницы",[42,2028,2029],{},"man systemd",[42,2031,2032],{},"man systemctl",[42,2034,2035],{},"man systemd.unit",[42,2037,2038],{},"man journalctl",[35,2040,2041,833,2044],{},[485,2042,2043],{},"Официальная документация",[2045,2046,2047],"a",{"href":2047,"rel":2048},"https://www.freedesktop.org/wiki/Software/systemd/",[2049],"nofollow",[35,2051,2052,833,2055,2058],{},[485,2053,2054],{},"Диагностика",[42,2056,2057],{},"sudo systemd-analyze blame"," — посмотреть, какие службы грузятся долго.",[35,2060,2061,833,2064,2067,2068,2070,2071,2074],{},[485,2062,2063],{},"Редактирование существующих служб",[42,2065,2066],{},"/lib/systemd/system/"," (пакетные) vs ",[42,2069,48],{}," (локальные). Изменяйте только в ",[42,2072,2073],{},"/etc/",", чтобы обновления пакетов не затерли настройки.",[21,2076,2077],{},"Systemd — мощный инструмент. Экспериментируйте с тестовыми службами, изучайте логи и gradually усложняйте конфигурации. Удачи в администрировании!",[552,2079,2080],{},"html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .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 .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 .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}",{"title":90,"searchDepth":103,"depth":103,"links":2082},[2083,2084,2085,2089,2093,2099,2103,2104,2113],{"id":18,"depth":103,"text":19},{"id":29,"depth":103,"text":30},{"id":854,"depth":103,"text":855,"children":2086},[2087,2088],{"id":861,"depth":109,"text":862},{"id":934,"depth":109,"text":935},{"id":1034,"depth":103,"text":1035,"children":2090},[2091,2092],{"id":1043,"depth":109,"text":1044},{"id":1191,"depth":109,"text":1192},{"id":1276,"depth":103,"text":1277,"children":2094},[2095,2096,2097,2098],{"id":1283,"depth":109,"text":1284},{"id":1361,"depth":109,"text":1362},{"id":1478,"depth":109,"text":1479},{"id":1556,"depth":109,"text":1557},{"id":1604,"depth":103,"text":1605,"children":2100},[2101,2102],{"id":1608,"depth":109,"text":1609},{"id":1670,"depth":109,"text":1671},{"id":424,"depth":103,"text":425},{"id":476,"depth":103,"text":477,"children":2105},[2106,2108,2109,2110,2111,2112],{"id":1795,"depth":109,"text":2107},"1. Служба не запускается: systemctl start молчалив",{"id":1841,"depth":109,"text":1842},{"id":1865,"depth":109,"text":1866},{"id":1920,"depth":109,"text":1921},{"id":1944,"depth":109,"text":1945},{"id":1977,"depth":109,"text":1978},{"id":2018,"depth":103,"text":2019},"2026-02-17 12:20:52","Подробное руководство по systemd services: от базовых команд до создания собственных служб. Управляйте демонами Linux как профессионал за 15 минут.","15-30 мин",[2118,2121,2124,2127],{"answer":2119,"question":2120},"Systemd service — это unit-файл, описывающий процесс (демон), который systemd управляет: запускает, останавливает, отслеживает логи и обеспечивает автозагрузку. Это стандарт для современных Linux-дистрибутивов.","Что такое systemd service и зачем он нужен?",{"answer":2122,"question":2123},"Создайте файл `/etc/systemd/system/ваша_служба.service` с корректными секциями [Unit], [Service] и [Install], затем выполните `systemctl daemon-reload` и `systemctl enable --now ваша_служба`.","Как создать службу systemd с нуля?",{"answer":2125,"question":2126},"Чаще всего причина в отсутствии `WantedBy=multi-user.target` в секции [Install] или неправильных правах на unit-файл (должен быть 644). Проверьте `systemctl status служба` и `journalctl -u служба`.","Почему служба не запускается после перезагрузки?",{"answer":2128,"question":2129},"Используйте `journalctl -u имя_службы.service -f` для реального времени или `journalctl -u имя_службы --since \"1 hour ago\"` для истории. Для старых syslog-логов проверьте `/var/log/syslog` или `/var/log/messages`.","Как посмотреть логи конкретной службы?",[2131,2134,2137,2140,2143],{"name":2132,"text":2133},"Изучите базовые команды systemctl","Ознакомьтесь с основными командами: `systemctl list-units --type=service` (список служб), `systemctl status nginx` (статус), `systemctl start/stop/restart nginx` (управление).",{"name":2135,"text":2136},"Настройте автозагрузку служб","Включите службу на автозагрузку: `systemctl enable nginx`. Отключите: `systemctl disable nginx`. Проверьте включённые: `systemctl is-enabled nginx`.",{"name":2138,"text":2139},"Используйте journalctl для диагностики","Анализируйте логи служб: `journalctl -u nginx --since today` (логи nginx за сегодня), `journalctl -f` (отслеживание в реальном времени). Фильтруйте по приоритету: `journalctl -p err`.",{"name":2141,"text":2142},"Создайте простую пользовательскую службу","Создайте unit-файл в `/etc/systemd/system/` с минимальными параметрами: [Unit] (Description), [Service] (ExecStart, Restart), [Install] (WantedBy). Пример для скрипта /opt/myscript.sh.",{"name":2144,"text":2145},"Проверьте и перезагрузите конфигурацию","После создания/изменения unit-файлов выполните `systemctl daemon-reload`. Затем протестируйте: `systemctl start моя_служба`, `systemctl status моя_служба`.","PT20M",[2148,2149,2150,2151,2152,2153,2154,2155,2156,2157],"systemd services linux","управление службами systemd","systemctl команды","создание службы systemd","unit файлы systemd","journalctl логи","демоны linux systemd","автозагрузка служб systemd","systemd tutorial русский","systemd service failed",{},[618,2160,2161],"/guides/linux/journalctl-usage","/guides/linux/linux-permissions-explained",{"title":764,"description":2115},"guides/linux/systemd-services-explained","В этом гайде вы изучите архитектуру systemd, научитесь управлять службами через systemctl, создавать unit-файлы и диагностировать проблемы. Практические примеры для Ubuntu, CentOS и Fedora.",[629,619,2166,2167,2168,787,2169],"admin","services","init","unit files","1cCOOn8IUZbtUUIhoQ6Bvnrpa3JQaCtQyAuFh-OHjYk"]