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