[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"page-ru-/guides/linux/cron-jobs-basics":3,"mdc-91dkh5-key":446,"mdc--ttrv26-key":464,"mdc--3p2cyy-key":481,"mdc-awqgcy-key":504,"mdc--8456at-key":520,"mdc--ga72po-key":536,"mdc-nbxsxt-key":571,"related-/guides/linux/crontab-editing,/guides/linux/systemd-timers":593,"mdc--l5ddyn-key":1582},{"id":4,"title":5,"appliesTo":6,"author":11,"body":12,"canonical":381,"code":90,"createdAt":382,"description":383,"difficulty":384,"draft":385,"estimatedTime":386,"extension":387,"faq":388,"howToSteps":401,"howToTotalTime":414,"image":381,"keywords":415,"locale":425,"meta":426,"navigation":427,"path":428,"platform":429,"related":430,"section":433,"seo":434,"severity":90,"stem":435,"summary":436,"tags":437,"twitterCreator":381,"twitterSite":381,"type":444,"updatedAt":382,"__hash__":445},"content_ru/guides/linux/cron-jobs-basics.md","Создавайте и управляйте cron-задачами: полное руководство по cron в Linux",[7,8,9,10],"Ubuntu 22.04","Debian 12","CentOS 8","Fedora 36","FixPedia Team",{"type":13,"value":14,"toc":368},"minimark",[15,20,24,28,61,65,70,77,81,84,134,183,201,205,216,235,241,244,248,254,263,266,270,304,308,364],[16,17,19],"h2",{"id":18},"введение-зачем-это-нужно","Введение / Зачем это нужно",[21,22,23],"p",{},"Cron — это легковесный планировщик задач в Linux, который запускает команды по расписанию. Понимание основ cron позволяет вам автоматизировать регулярные задачи, такие как резервное копирование, очистка логов и отправка уведомлений, без необходимости вручную запускать скрипты.",[16,25,27],{"id":26},"требования-подготовка","Требования / Подготовка",[29,30,31,35,38,54],"ul",{},[32,33,34],"li",{},"Доступ к терминалу с правами обычного пользователя (для редактирования личной таблицы) или суперпользователя (для системных задач).",[32,36,37],{},"Базовое понимание bash-скриптов (необязательно, но полезно).",[32,39,40,41,45,46,49,50,53],{},"Редактор с поддержкой ",[42,43,44],"code",{},"vi","/",[42,47,48],{},"nano"," или любой текстовый редактор, настроенный как ",[42,51,52],{},"$EDITOR",".",[32,55,56,57,60],{},"Необходимые скрипты должны быть доступны по указанному пути и помечены как исполняемые (",[42,58,59],{},"chmod +x",").",[16,62,64],{"id":63},"пошаговая-инструкция","Пошаговая инструкция",[66,67,69],"h3",{"id":68},"шаг-1-открыть-редактор-crontab","Шаг 1: Открыть редактор crontab",[21,71,72,73,76],{},"Выполните ",[42,74,75],{},"crontab -e",". Система откроет выбранный редактор (обычно vi) с пустым файлом, в котором можно записать расписание задач.",[66,78,80],{"id":79},"шаг-2-добавить-задачу-cron","Шаг 2: Добавить задачу cron",[21,82,83],{},"Добавьте строку с расписанием и командой, например:",[85,86,91],"pre",{"className":87,"code":88,"language":89,"meta":90,"style":90},"language-bash shiki shiki-themes github-light github-dark","# Ежедневное резервное копирование в 02:00\n0 2 * * * /usr/local/bin/backup.sh > /var/log/backup.log 2>&1\n","bash","",[42,92,93,102],{"__ignoreMap":90},[94,95,98],"span",{"class":96,"line":97},"line",1,[94,99,101],{"class":100},"sJ8bj","# Ежедневное резервное копирование в 02:00\n",[94,103,105,109,113,116,118,120,124,128,131],{"class":96,"line":104},2,[94,106,108],{"class":107},"sScJk","0",[94,110,112],{"class":111},"sj4cs"," 2",[94,114,115],{"class":111}," *",[94,117,115],{"class":111},[94,119,115],{"class":111},[94,121,123],{"class":122},"sZZnC"," /usr/local/bin/backup.sh",[94,125,127],{"class":126},"szBVR"," >",[94,129,130],{"class":122}," /var/log/backup.log",[94,132,133],{"class":126}," 2>&1\n",[29,135,136,146,154,162,174],{},[32,137,138,142,143],{},[139,140,141],"strong",{},"минуты"," – ",[42,144,145],{},"0‑59",[32,147,148,142,151],{},[139,149,150],{},"часы",[42,152,153],{},"0‑23",[32,155,156,142,159],{},[139,157,158],{},"день месяца",[42,160,161],{},"1‑31",[32,163,164,142,167,170,171],{},[139,165,166],{},"месяц",[42,168,169],{},"1‑12"," или ",[42,172,173],{},"янв‑дек",[32,175,176,142,179,182],{},[139,177,178],{},"день недели",[42,180,181],{},"0‑7"," (0 и 7 означают воскресенье)",[21,184,185,186,189,190,193,194,197,198,60],{},"Вы можете использовать ",[42,187,188],{},"*"," для «каждый» или ",[42,191,192],{},"*/N"," для «каждые N единиц». Используйте запятые для перечисления значений (",[42,195,196],{},"1,3,5",") и дефисы для диапазонов (",[42,199,200],{},"2-5",[66,202,204],{"id":203},"шаг-3-сохранить-и-перезапустить-cron","Шаг 3: Сохранить и перезапустить cron",[21,206,207,208,211,212,215],{},"Сохраните файл (",[42,209,210],{},"Esc"," → ",[42,213,214],{},":wq","). Перезапустите демоночный процесс:",[85,217,219],{"className":87,"code":218,"language":89,"meta":90,"style":90},"sudo systemctl restart cron\n",[42,220,221],{"__ignoreMap":90},[94,222,223,226,229,232],{"class":96,"line":97},[94,224,225],{"class":107},"sudo",[94,227,228],{"class":122}," systemctl",[94,230,231],{"class":122}," restart",[94,233,234],{"class":122}," cron\n",[21,236,237,238,53],{},"На older дистрибутивах используйте ",[42,239,240],{},"sudo service cron restart",[242,243],"in-article-ad",{},[66,245,247],{"id":246},"шаг-4-проверить-регистрацию-задачи","Шаг 4: Проверить регистрацию задачи",[21,249,72,250,253],{},[42,251,252],{},"crontab -l",", чтобы убедиться, что задача отображается. Запустите задачу вручную для проверки:",[85,255,257],{"className":87,"code":256,"language":89,"meta":90,"style":90},"/usr/local/bin/backup.sh\n",[42,258,259],{"__ignoreMap":90},[94,260,261],{"class":96,"line":97},[94,262,256],{"class":107},[21,264,265],{},"Если скрипт исполняется без ошибок, cron должен запускать его по расписанию.",[16,267,269],{"id":268},"проверка-результата","Проверка результата",[29,271,272,286,295],{},[32,273,274,277,278,281,282,285],{},[139,275,276],{},"Проверьте журнал cron",": ",[42,279,280],{},"journalctl -u cron -f"," (или ",[42,283,284],{},"sudo tail -f /var/log/syslog"," на Debian/Ubuntu).",[32,287,288,291,292,60],{},[139,289,290],{},"Проверьте лог файла задачи",": проверьте файл, указанный в команде (",[42,293,294],{},"/var/log/backup.log",[32,296,297,300,301,303],{},[139,298,299],{},"Проверьте регистрацию задачи",": повторите ",[42,302,252],{}," перед и после изменения файла для подтверждения сохранения.",[16,305,307],{"id":306},"возможные-проблемы","Возможные проблемы",[29,309,310,322,334,348],{},[32,311,312,315,316,318,319,321],{},[139,313,314],{},"Неправильный синтаксис",": cron не выводит ошибок, если синтаксис неправильный. Используйте ",[42,317,252],{}," для проверки и ",[42,320,75],{}," для исправления.",[32,323,324,327,328,330,331,53],{},[139,325,326],{},"Отсутствие исполняемого флага",": скрипт без ",[42,329,59],{}," может не запускаться. Добавьте ",[42,332,333],{},"chmod +x /usr/local/bin/backup.sh",[32,335,336,339,340,343,344,347],{},[139,337,338],{},"Неправильный путь к интерпретатору",": если скрипт использует ",[42,341,342],{},"#!/usr/bin/env python3",", убедитесь, что ",[42,345,346],{},"python3"," доступен в PATH задачи cron.",[32,349,350,353,354,356,357,360,361,60],{},[139,351,352],{},"Проблемы с правами",": задачи, требующие ",[42,355,225],{},", должны быть добавлены в ",[42,358,359],{},"/etc/cron.d/"," с правильными правами доступа (",[42,362,363],{},"chmod 644",[365,366,367],"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 .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .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);}",{"title":90,"searchDepth":104,"depth":104,"links":369},[370,371,372,379,380],{"id":18,"depth":104,"text":19},{"id":26,"depth":104,"text":27},{"id":63,"depth":104,"text":64,"children":373},[374,376,377,378],{"id":68,"depth":375,"text":69},3,{"id":79,"depth":375,"text":80},{"id":203,"depth":375,"text":204},{"id":246,"depth":375,"text":247},{"id":268,"depth":104,"text":269},{"id":306,"depth":104,"text":307},null,"2026-07-09 12:19:29","Узнайте, как настроить cron в Linux, планировать задачи и автоматизировать работу системы за 5 минут с помощью простой пошаговой инструкции.","medium",false,"5-10 мин","md",[389,392,395,398],{"question":390,"answer":391},"Как открыть таблицу cron для редактирования?","Выполните команду `crontab -e`. Система откроет выбранный редактор (обычно vi) с пустым файлом, в котором можно записать расписание задач.",{"question":393,"answer":394},"Что означают поля в cron-выражении?","Поля представляют минуты, часы, день месяца, месяц, день недели. Например, `*/15 * * * *` означает «каждые 15 минут каждый час».",{"question":396,"answer":397},"Как проверить, что cron-задача зарегистрирована?","Используйте `crontab -l`, чтобы вывести список зарегистрированных задач. После сохранения файла с помощью `crontab -e` задача должна появиться в выводе.",{"question":399,"answer":400},"Какие общие ошибки встречаются при настройке cron?","Частые ошибки: неправильный синтаксис выражения, отсутствие исполняемого флага у скрипта (`chmod +x`), использование неправильного пути к интерпретатору в shebang.",[402,405,408,411],{"name":403,"text":404},"Открыть редактор crontab","Запустите `crontab -e`. Система предложит выбрать редактор. Сохраните файл после открытия.",{"name":406,"text":407},"Добавить задачу cron","Добавьте строку с расписанием и командой, например:\n\n```bash\n# Ежедневное резервное копирование в 02:00\n0 2 * * * /usr/local/bin/backup.sh > /var/log/backup.log 2>&1\n```\n\nОбъясните каждое поле: минуты, часы, день месяца, месяц, день недели.",{"name":409,"text":410},"Сохранить и перезапустить cron","Сохраните файл (`Esc` → `:wq`). Перезапустите демоночный процесс: `sudo systemctl restart cron` (или `sudo service cron restart` на older системах).",{"name":412,"text":413},"Проверить регистрацию задачи","Выполните `crontab -l`, чтобы убедиться, что задача отображается. Запустите задачу вручную для проверки: `/usr/local/bin/backup.sh`.","PT7M",[416,417,418,419,420,421,422,423,424],"cron jobs basics","как настроить cron в linux","crontab редактирование","синтаксис cron выражений","планировщик задач linux","автоматизация задач linux","cron daemon","настройка cron ubuntu","настройка cron centos","ru_RU",{},true,"/guides/linux/cron-jobs-basics","linux",[431,432],"/guides/linux/crontab-editing","/guides/linux/systemd-timers","Гайды Linux",{"title":5,"description":383},"guides/linux/cron-jobs-basics","В этом гайде вы научитесь создавать, редактировать и управлять cron-задачами в Linux, чтобы автоматизировать регулярные задачи без использования графического интерфейса.",[438,439,440,441,442,443],"Linux","Cron","Bash","Планировщик задач","Автоматизация","Сценарии","guide","H_yZ_v0XGLLn7LCfKCDQDBrUsxjlkJokm70CPix977E",{"data":447,"body":448},{},{"type":449,"children":450},"root",[451],{"type":452,"tag":21,"props":453,"children":454},"element",{},[455,458,463],{"type":456,"value":457},"text","Выполните команду ",{"type":452,"tag":42,"props":459,"children":461},{"className":460},[],[462],{"type":456,"value":75},{"type":456,"value":76},{"data":465,"body":466},{},{"type":449,"children":467},[468],{"type":452,"tag":21,"props":469,"children":470},{},[471,473,479],{"type":456,"value":472},"Поля представляют минуты, часы, день месяца, месяц, день недели. Например, ",{"type":452,"tag":42,"props":474,"children":476},{"className":475},[],[477],{"type":456,"value":478},"*/15 * * * *",{"type":456,"value":480}," означает «каждые 15 минут каждый час».",{"data":482,"body":483},{},{"type":449,"children":484},[485],{"type":452,"tag":21,"props":486,"children":487},{},[488,490,495,497,502],{"type":456,"value":489},"Используйте ",{"type":452,"tag":42,"props":491,"children":493},{"className":492},[],[494],{"type":456,"value":252},{"type":456,"value":496},", чтобы вывести список зарегистрированных задач. После сохранения файла с помощью ",{"type":452,"tag":42,"props":498,"children":500},{"className":499},[],[501],{"type":456,"value":75},{"type":456,"value":503}," задача должна появиться в выводе.",{"data":505,"body":506},{},{"type":449,"children":507},[508],{"type":452,"tag":21,"props":509,"children":510},{},[511,513,518],{"type":456,"value":512},"Частые ошибки: неправильный синтаксис выражения, отсутствие исполняемого флага у скрипта (",{"type":452,"tag":42,"props":514,"children":516},{"className":515},[],[517],{"type":456,"value":59},{"type":456,"value":519},"), использование неправильного пути к интерпретатору в shebang.",{"data":521,"body":522},{},{"type":449,"children":523},[524],{"type":452,"tag":21,"props":525,"children":526},{},[527,529,534],{"type":456,"value":528},"Запустите ",{"type":452,"tag":42,"props":530,"children":532},{"className":531},[],[533],{"type":456,"value":75},{"type":456,"value":535},". Система предложит выбрать редактор. Сохраните файл после открытия.",{"data":537,"body":538},{},{"type":449,"children":539},[540],{"type":452,"tag":21,"props":541,"children":542},{},[543,544,549,550,555,557,563,564,569],{"type":456,"value":207},{"type":452,"tag":42,"props":545,"children":547},{"className":546},[],[548],{"type":456,"value":210},{"type":456,"value":211},{"type":452,"tag":42,"props":551,"children":553},{"className":552},[],[554],{"type":456,"value":214},{"type":456,"value":556},"). Перезапустите демоночный процесс: ",{"type":452,"tag":42,"props":558,"children":560},{"className":559},[],[561],{"type":456,"value":562},"sudo systemctl restart cron",{"type":456,"value":281},{"type":452,"tag":42,"props":565,"children":567},{"className":566},[],[568],{"type":456,"value":240},{"type":456,"value":570}," на older системах).",{"data":572,"body":573},{},{"type":449,"children":574},[575],{"type":452,"tag":21,"props":576,"children":577},{},[578,579,584,586,592],{"type":456,"value":72},{"type":452,"tag":42,"props":580,"children":582},{"className":581},[],[583],{"type":456,"value":252},{"type":456,"value":585},", чтобы убедиться, что задача отображается. Запустите задачу вручную для проверки: ",{"type":452,"tag":42,"props":587,"children":589},{"className":588},[],[590],{"type":456,"value":591},"/usr/local/bin/backup.sh",{"type":456,"value":53},[594],{"id":595,"title":596,"appliesTo":597,"author":11,"body":599,"canonical":381,"code":381,"createdAt":1526,"description":1527,"difficulty":384,"draft":385,"estimatedTime":1528,"extension":387,"faq":1529,"howToSteps":1539,"howToTotalTime":1558,"image":381,"keywords":1559,"locale":425,"meta":1568,"navigation":427,"path":432,"platform":429,"related":1569,"section":433,"seo":1573,"severity":381,"stem":1574,"summary":1575,"tags":1576,"twitterCreator":381,"twitterSite":381,"type":444,"updatedAt":1526,"__hash__":1581},"content_ru/guides/linux/systemd-timers.md","Systemd-таймеры: гибкая замена cron для автоматизации в Linux",[598],"systemd 235+ (все современные дистрибутивы: Ubuntu 18.04+, Debian 9+, CentOS 7+, Fedora 25+)",{"type":13,"value":600,"toc":1501},[601,603,617,620,622,673,677,688,695,788,793,839,843,849,915,919,967,971,974,988,991,995,998,1060,1067,1069,1073,1077,1080,1092,1095,1099,1104,1160,1164,1186,1190,1194,1200,1218,1228,1232,1238,1256,1263,1267,1273,1292,1295,1297,1351,1354,1356,1360,1397,1401,1436,1443,1498],[16,602,19],{"id":18},[21,604,605,608,609,612,613,616],{},[139,606,607],{},"Systemd-таймеры"," — это современный механизм планирования задач в системах, использующих systemd (практически все актуальные дистрибутивы Linux). Он пришел на смену классическому ",[42,610,611],{},"cron",", предлагая более тесную интеграцию с системой инициализации, расширенные возможности расписания и единый журнал событий (",[42,614,615],{},"journalctl","). С помощью таймеров вы можете автоматизировать резервное копирование, очистку логов, проверку обновлений или запуск любых скриптов по расписанию, с задержкой после загрузки или даже в зависимости от других событий системы.",[21,618,619],{},"После прохождения этого гайда вы сможете создавать надежные и легко управляемые задания, которые будут корректно обрабатывать пропущенные запуски (например, если компьютер был выключен) и предоставлять детальную информацию о своих работах.",[16,621,27],{"id":26},[623,624,625,637,650,659],"ol",{},[32,626,627,630,631,170,634,60],{},[139,628,629],{},"Система с systemd:"," Убедитесь, что в вашем дистрибутиве используется systemd (проверьте ",[42,632,633],{},"echo $INIT_SYSTEM",[42,635,636],{},"ps -p 1 -o comm=",[32,638,639,642,643,646,647,53],{},[139,640,641],{},"Права суперпользователя (root):"," Для создания системных юнитов в ",[42,644,645],{},"/etc/systemd/system/"," и их управления требуются права администратора. Для пользовательских таймеров (без sudo) используйте ",[42,648,649],{},"~/.config/systemd/user/",[32,651,652,655,656,53],{},[139,653,654],{},"Базовое понимание systemd:"," Желательно знать, что такое unit-файлы и команда ",[42,657,658],{},"systemctl",[32,660,661,664,665,667,668,170,671,53],{},[139,662,663],{},"Текстовый редактор:"," Например, ",[42,666,48],{},", ",[42,669,670],{},"vim",[42,672,44],{},[16,674,676],{"id":675},"шаг-1-создаем-файл-службы-service","Шаг 1: Создаем файл службы (.service)",[21,678,679,680,683,684,687],{},"Таймер не выполняет команды напрямую. Он активирует ",[139,681,682],{},"файл службы"," (",[42,685,686],{},".service","), который содержит инструкции по запуску вашей задачи. Начнем с него.",[21,689,690,691,694],{},"Давайте создадим простую службу для резервного копирования домашней директории. Сохраните этот конфиг как ",[42,692,693],{},"/etc/systemd/system/home-backup.service",":",[85,696,700],{"className":697,"code":698,"language":699,"meta":90,"style":90},"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",[42,701,702,707,712,717,723,729,735,741,747,753,759,765,771,776,782],{"__ignoreMap":90},[94,703,704],{"class":96,"line":97},[94,705,706],{},"[Unit]\n",[94,708,709],{"class":96,"line":104},[94,710,711],{},"Description=Резервное копирование домашней директории\n",[94,713,714],{"class":96,"line":375},[94,715,716],{},"# Запускать службу только если доступна сеть (опционально)\n",[94,718,720],{"class":96,"line":719},4,[94,721,722],{},"Wants=network-online.target\n",[94,724,726],{"class":96,"line":725},5,[94,727,728],{},"After=network-online.target\n",[94,730,732],{"class":96,"line":731},6,[94,733,734],{"emptyLinePlaceholder":427},"\n",[94,736,738],{"class":96,"line":737},7,[94,739,740],{},"[Service]\n",[94,742,744],{"class":96,"line":743},8,[94,745,746],{},"Type=oneshot\n",[94,748,750],{"class":96,"line":749},9,[94,751,752],{},"# Команда, которую нужно выполнить. Пример с tar и сжатием.\n",[94,754,756],{"class":96,"line":755},10,[94,757,758],{},"ExecStart=/bin/tar -czf /var/backups/home_$(date +\\%Y-\\%m-\\%d).tar.gz /home\n",[94,760,762],{"class":96,"line":761},11,[94,763,764],{},"# Указываем, что задание выполняется один раз за запуск таймера\n",[94,766,768],{"class":96,"line":767},12,[94,769,770],{},"RemainAfterExit=yes\n",[94,772,774],{"class":96,"line":773},13,[94,775,734],{"emptyLinePlaceholder":427},[94,777,779],{"class":96,"line":778},14,[94,780,781],{},"[Install]\n",[94,783,785],{"class":96,"line":784},15,[94,786,787],{},"WantedBy=multi-user.target\n",[21,789,790],{},[139,791,792],{},"Ключевые моменты:",[29,794,795,805,821,827],{},[32,796,797,800,801,804],{},[42,798,799],{},"Type=oneshot",": Процесс службы завершается после выполнения ",[42,802,803],{},"ExecStart",". Используется для одноразовых задач.",[32,806,807,809,810,813,814,817,818,60],{},[42,808,803],{},": Основная команда. Обратите внимание на экранирование ",[42,811,812],{},"%"," в ",[42,815,816],{},"date"," (нужно ",[42,819,820],{},"\\%",[32,822,823,826],{},[42,824,825],{},"RemainAfterExit=yes",": Позволяет службе считаться активной после завершения команды. Полезно для мониторинга статуса.",[32,828,829,830,832,833,45,836,53],{},"Если нужно выполнить несколько команд, используйте скрипт и укажите его путь в ",[42,831,803],{},", или через ",[42,834,835],{},"ExecStartPre",[42,837,838],{},"ExecStartPost",[16,840,842],{"id":841},"шаг-2-создаем-файл-таймера-timer","Шаг 2: Создаем файл таймера (.timer)",[21,844,845,846,694],{},"Теперь создадим файл таймера, который будет запускать нашу службу по расписанию. Сохраните как ",[42,847,848],{},"/etc/systemd/system/home-backup.timer",[85,850,852],{"className":697,"code":851,"language":699,"meta":90,"style":90},"[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",[42,853,854,858,863,867,872,877,882,887,892,897,902,906,910],{"__ignoreMap":90},[94,855,856],{"class":96,"line":97},[94,857,706],{},[94,859,860],{"class":96,"line":104},[94,861,862],{},"Description=Таймер для ежедневного резервного копирования домашней директории\n",[94,864,865],{"class":96,"line":375},[94,866,734],{"emptyLinePlaceholder":427},[94,868,869],{"class":96,"line":719},[94,870,871],{},"[Timer]\n",[94,873,874],{"class":96,"line":725},[94,875,876],{},"# Расписание: каждый день в 02:30\n",[94,878,879],{"class":96,"line":731},[94,880,881],{},"OnCalendar=*-*-* 02:30:00\n",[94,883,884],{"class":96,"line":737},[94,885,886],{},"# Если задание было пропущено (компьютер выключен), запустить его при следующей загрузке\n",[94,888,889],{"class":96,"line":743},[94,890,891],{},"Persistent=true\n",[94,893,894],{"class":96,"line":749},[94,895,896],{},"# Служба, которую активировать\n",[94,898,899],{"class":96,"line":755},[94,900,901],{},"Unit=home-backup.service\n",[94,903,904],{"class":96,"line":761},[94,905,734],{"emptyLinePlaceholder":427},[94,907,908],{"class":96,"line":767},[94,909,781],{},[94,911,912],{"class":96,"line":773},[94,913,914],{},"WantedBy=timers.target\n",[21,916,917],{},[139,918,792],{},[29,920,921,943,953],{},[32,922,923,926,927,929,930],{},[42,924,925],{},"OnCalendar=*-*-* 02:30:00",": Гибкий синтаксис календаря. ",[42,928,188],{}," означает \"любое значение\". Здесь: любой год, любой месяц, любой день в 02:30.\n",[29,931,932],{},[32,933,934,935,938,939,942],{},"Примеры: ",[42,936,937],{},"Mon *-*-* 09:00:00"," (каждый понедельник в 9 утра), ",[42,940,941],{},"*-*-1 00:00:00"," (в первый день каждого месяца).",[32,944,945,948,949,952],{},[42,946,947],{},"Persistent=true",": Критически важная опция! Если компьютер был выключен в момент срабатывания таймера, ",[42,950,951],{},"systemd"," запустит задание сразу же при следующей загрузке системы.",[32,954,955,958,959,962,963,966],{},[42,956,957],{},"Unit=home-backup.service",": Явно указываем, какую службу запускать. Если имя файла службы совпадает с именем таймера (например, ",[42,960,961],{},"home-backup.timer"," и ",[42,964,965],{},"home-backup.service","), этот параметр можно опустить.",[16,968,970],{"id":969},"шаг-3-перезагружаем-конфигурацию-systemd","Шаг 3: Перезагружаем конфигурацию systemd",[21,972,973],{},"После создания обоих файлов необходимо сообщить systemd о их существовании. Выполните команду:",[85,975,977],{"className":87,"code":976,"language":89,"meta":90,"style":90},"sudo systemctl daemon-reload\n",[42,978,979],{"__ignoreMap":90},[94,980,981,983,985],{"class":96,"line":97},[94,982,225],{"class":107},[94,984,228],{"class":122},[94,986,987],{"class":122}," daemon-reload\n",[21,989,990],{},"Эта команда заставляет systemd перечитать все конфигурационные файлы. Без нее новые таймеры и службы не будут видны системе.",[16,992,994],{"id":993},"шаг-4-активируем-и-запускаем-таймер","Шаг 4: Активируем и запускаем таймер",[21,996,997],{},"Теперь нужно включить таймер (чтобы он запускался автоматически при загрузке) и, возможно, запустить его сразу для теста.",[85,999,1001],{"className":87,"code":1000,"language":89,"meta":90,"style":90},"# 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",[42,1002,1003,1008,1020,1024,1029,1040,1044,1049],{"__ignoreMap":90},[94,1004,1005],{"class":96,"line":97},[94,1006,1007],{"class":100},"# 1. Включить автозапуск таймера при загрузке системы\n",[94,1009,1010,1012,1014,1017],{"class":96,"line":104},[94,1011,225],{"class":107},[94,1013,228],{"class":122},[94,1015,1016],{"class":122}," enable",[94,1018,1019],{"class":122}," home-backup.timer\n",[94,1021,1022],{"class":96,"line":375},[94,1023,734],{"emptyLinePlaceholder":427},[94,1025,1026],{"class":96,"line":719},[94,1027,1028],{"class":100},"# 2. Запустить таймер немедленно (для проверки)\n",[94,1030,1031,1033,1035,1038],{"class":96,"line":725},[94,1032,225],{"class":107},[94,1034,228],{"class":122},[94,1036,1037],{"class":122}," start",[94,1039,1019],{"class":122},[94,1041,1042],{"class":96,"line":731},[94,1043,734],{"emptyLinePlaceholder":427},[94,1045,1046],{"class":96,"line":737},[94,1047,1048],{"class":100},"# 3. Проверить статус\n",[94,1050,1051,1053,1055,1058],{"class":96,"line":743},[94,1052,225],{"class":107},[94,1054,228],{"class":122},[94,1056,1057],{"class":122}," status",[94,1059,1019],{"class":122},[21,1061,1062,1063,1066],{},"Вы должны увидеть активный (",[42,1064,1065],{},"active (waiting)",") таймер и время следующего запуска (Next elapse).",[242,1068],{},[16,1070,1072],{"id":1071},"шаг-5-мониторинг-и-управление","Шаг 5: Мониторинг и управление",[66,1074,1076],{"id":1075},"просмотр-всех-активных-таймеров","Просмотр всех активных таймеров",[21,1078,1079],{},"Чтобы увидеть список всех настроенных таймеров и время их следующего срабатывания, используйте:",[85,1081,1083],{"className":87,"code":1082,"language":89,"meta":90,"style":90},"systemctl list-timers\n",[42,1084,1085],{"__ignoreMap":90},[94,1086,1087,1089],{"class":96,"line":97},[94,1088,658],{"class":107},[94,1090,1091],{"class":122}," list-timers\n",[21,1093,1094],{},"Эта команда покажет вам таблицу с именем таймера, временем следующего запуска, временем последнего запуска и юнитом, который он активирует.",[66,1096,1098],{"id":1097},"просмотр-логов","Просмотр логов",[21,1100,1101,1102,694],{},"Все, что выводит ваша служба (включая ошибки), попадает в журнал systemd. Для просмотра используйте ",[42,1103,615],{},[85,1105,1107],{"className":87,"code":1106,"language":89,"meta":90,"style":90},"# Логи конкретного таймера и связанной с ним службы\nsudo journalctl -u home-backup.timer -u home-backup.service -f\n\n# Логи за последний день\nsudo journalctl -u home-backup.service --since \"1 day ago\"\n",[42,1108,1109,1114,1135,1139,1144],{"__ignoreMap":90},[94,1110,1111],{"class":96,"line":97},[94,1112,1113],{"class":100},"# Логи конкретного таймера и связанной с ним службы\n",[94,1115,1116,1118,1121,1124,1127,1129,1132],{"class":96,"line":104},[94,1117,225],{"class":107},[94,1119,1120],{"class":122}," journalctl",[94,1122,1123],{"class":111}," -u",[94,1125,1126],{"class":122}," home-backup.timer",[94,1128,1123],{"class":111},[94,1130,1131],{"class":122}," home-backup.service",[94,1133,1134],{"class":111}," -f\n",[94,1136,1137],{"class":96,"line":375},[94,1138,734],{"emptyLinePlaceholder":427},[94,1140,1141],{"class":96,"line":719},[94,1142,1143],{"class":100},"# Логи за последний день\n",[94,1145,1146,1148,1150,1152,1154,1157],{"class":96,"line":725},[94,1147,225],{"class":107},[94,1149,1120],{"class":122},[94,1151,1123],{"class":111},[94,1153,1131],{"class":122},[94,1155,1156],{"class":111}," --since",[94,1158,1159],{"class":122}," \"1 day ago\"\n",[66,1161,1163],{"id":1162},"остановка-и-отключение","Остановка и отключение",[29,1165,1166,1175],{},[32,1167,1168,1171,1172],{},[139,1169,1170],{},"Остановить"," текущий запуск (если он в процессе): ",[42,1173,1174],{},"sudo systemctl stop home-backup.timer",[32,1176,1177,962,1179,1182,1183],{},[139,1178,1170],{},[139,1180,1181],{},"отключить"," автозапуск: ",[42,1184,1185],{},"sudo systemctl disable --now home-backup.timer",[16,1187,1189],{"id":1188},"шаг-6-расширенные-возможности-и-примеры","Шаг 6: Расширенные возможности и примеры",[66,1191,1193],{"id":1192},"запуск-с-задержкой-после-загрузки","Запуск с задержкой после загрузки",[21,1195,1196,1197,694],{},"Если задача должна запускаться не по календарю, а через некоторое время после загрузки системы (например, чтобы дать время на запуск сетевых служб), используйте ",[42,1198,1199],{},"OnBootSec",[85,1201,1203],{"className":697,"code":1202,"language":699,"meta":90,"style":90},"[Timer]\nOnBootSec=15min\nUnit=home-backup.service\n",[42,1204,1205,1209,1214],{"__ignoreMap":90},[94,1206,1207],{"class":96,"line":97},[94,1208,871],{},[94,1210,1211],{"class":96,"line":104},[94,1212,1213],{},"OnBootSec=15min\n",[94,1215,1216],{"class":96,"line":375},[94,1217,901],{},[21,1219,1220,1221,962,1224,1227],{},"Это запустит службу через 15 минут после загрузки. Можно комбинировать: ",[42,1222,1223],{},"OnBootSec=5min",[42,1225,1226],{},"OnUnitActiveSec=1h"," для запуска через 5 минут после загрузки и затем каждый час.",[66,1229,1231],{"id":1230},"периодический-запуск-интервал","Периодический запуск (интервал)",[21,1233,1234,1235,694],{},"Для интервалов, не привязанных к календарю (например, \"каждые 30 минут\"), используйте ",[42,1236,1237],{},"OnUnitActiveSec",[85,1239,1241],{"className":697,"code":1240,"language":699,"meta":90,"style":90},"[Timer]\nOnUnitActiveSec=30min\nUnit=home-backup.service\n",[42,1242,1243,1247,1252],{"__ignoreMap":90},[94,1244,1245],{"class":96,"line":97},[94,1246,871],{},[94,1248,1249],{"class":96,"line":104},[94,1250,1251],{},"OnUnitActiveSec=30min\n",[94,1253,1254],{"class":96,"line":375},[94,1255,901],{},[21,1257,1258,1259,1262],{},"Это означает: запускать службу каждые 30 минут после ",[139,1260,1261],{},"последнего успешного запуска"," этой службы.",[66,1264,1266],{"id":1265},"случайный-рандомизированный-запуск","Случайный (рандомизированный) запуск",[21,1268,1269,1270,694],{},"Чтобы избежать \"шторма\" при одновременном запуске множества таймеров на многих машинах (например, для обновлений), добавьте ",[42,1271,1272],{},"RandomizedDelaySec",[85,1274,1276],{"className":697,"code":1275,"language":699,"meta":90,"style":90},"[Timer]\nOnCalendar=daily\nRandomizedDelaySec=1h\n",[42,1277,1278,1282,1287],{"__ignoreMap":90},[94,1279,1280],{"class":96,"line":97},[94,1281,871],{},[94,1283,1284],{"class":96,"line":104},[94,1285,1286],{},"OnCalendar=daily\n",[94,1288,1289],{"class":96,"line":375},[94,1290,1291],{},"RandomizedDelaySec=1h\n",[21,1293,1294],{},"Задание будет запущено в случайный момент в течение часа после полуночи.",[16,1296,269],{"id":268},[623,1298,1299,1312,1321],{},[32,1300,1301,1304,1305,1308,1309,53],{},[139,1302,1303],{},"Убедитесь, что таймер активен:"," ",[42,1306,1307],{},"systemctl is-active home-backup.timer"," должен вернуть ",[42,1310,1311],{},"active",[32,1313,1314,1304,1317,1320],{},[139,1315,1316],{},"Проверьте расписание:",[42,1318,1319],{},"systemctl list-timers | grep home-backup"," покажет время следующего запуска.",[32,1322,1323,1326,1327,1330,1331],{},[139,1324,1325],{},"Дождитесь срабатывания"," (или запустите вручную ",[42,1328,1329],{},"sudo systemctl start home-backup.timer",") и проверьте:\n",[29,1332,1333,1339,1345],{},[32,1334,1335,1336],{},"Файл бэкапа: ",[42,1337,1338],{},"ls -lh /var/backups/",[32,1340,1341,1342],{},"Статус службы: ",[42,1343,1344],{},"systemctl status home-backup.service",[32,1346,1347,1348],{},"Журнал: ",[42,1349,1350],{},"sudo journalctl -u home-backup.service --no-pager -n 20",[21,1352,1353],{},"Если бэкап создался и в логах нет ошибок — всё работает.",[16,1355,307],{"id":306},[66,1357,1359],{"id":1358},"таймер-не-запускается-по-расписанию","Таймер не запускается по расписанию",[29,1361,1362,1375,1383],{},[32,1363,1364,1370,1371,1374],{},[139,1365,1366,1367,53],{},"Проверьте синтаксис ",[42,1368,1369],{},"OnCalendar"," Используйте ",[42,1372,1373],{},"systemd-analyze calendar '*-*-* 02:30:00'"," для валидации.",[32,1376,1377,1382],{},[139,1378,1379,1380],{},"Убедитесь, что ",[42,1381,947],{}," установлено, если компьютер может быть выключен в момент запуска.",[32,1384,1385,1390,1391,1393,1394,1396],{},[139,1386,1387,1388,53],{},"Проверьте, не конфликтует ли таймер с ",[42,1389,611],{}," Systemd и ",[42,1392,611],{}," независимы. Если задача уже есть в ",[42,1395,611],{},", отключите её, чтобы избежать двойного запуска.",[66,1398,1400],{"id":1399},"служба-запущенная-таймером-завершается-с-ошибкой","Служба, запущенная таймером, завершается с ошибкой",[29,1402,1403,1415,1423],{},[32,1404,1405,1411,1412,1414],{},[139,1406,1407,1408,53],{},"Смотрите логи ",[42,1409,1410],{},"journalctl -u \u003Cservice>.service"," Ошибка почти всегда в команде ",[42,1413,803],{}," (неверный путь, нет прав, недостаточно места).",[32,1416,1417,1420,1421,53],{},[139,1418,1419],{},"Проверьте права доступа"," к скрипту/команде и к целевым директориям/файлам. Для системных служб часто требуется ",[42,1422,449],{},[32,1424,1425,1429,1430,170,1433,53],{},[139,1426,1379,1427],{},[42,1428,799],{}," соответствует вашей задаче. Если команда запускает демон, может потребоваться ",[42,1431,1432],{},"Type=forking",[42,1434,1435],{},"Type=notify",[66,1437,1439,1440],{"id":1438},"таймер-не-виден-в-systemctl-list-timers","Таймер не виден в ",[42,1441,1442],{},"systemctl list-timers",[29,1444,1445,1454,1466,1479],{},[32,1446,1447,1453],{},[139,1448,1449,1450],{},"Выполнили ли вы ",[42,1451,1452],{},"daemon-reload"," после создания файлов?",[32,1455,1456,1459,1460,1463,1464,53],{},[139,1457,1458],{},"Файлы имеют правильные имена и расположение?"," Для системных юнитов: ",[42,1461,1462],{},"/etc/systemd/system/\u003Cname>.timer",". Для пользовательских: ",[42,1465,649],{},[32,1467,1468,1304,1471,1474,1475,1478],{},[139,1469,1470],{},"Таймер включен?",[42,1472,1473],{},"sudo systemctl enable \u003Cname>.timer"," (для системного) или ",[42,1476,1477],{},"systemctl --user enable \u003Cname>.timer"," (для пользовательского).",[32,1480,1481,1304,1484,1487,1488,1490,1491,1494,1495,60],{},[139,1482,1483],{},"Проверьте, не активирован ли таймер сразу:",[42,1485,1486],{},"systemctl status \u003Cname>.timer",". Если он ",[42,1489,1065],{},", он работает. Если ",[42,1492,1493],{},"inactive (dead)",", возможно, его нужно запустить (",[42,1496,1497],{},"start",[365,1499,1500],{},"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":104,"depth":104,"links":1502},[1503,1504,1505,1506,1507,1508,1509,1514,1519,1520],{"id":18,"depth":104,"text":19},{"id":26,"depth":104,"text":27},{"id":675,"depth":104,"text":676},{"id":841,"depth":104,"text":842},{"id":969,"depth":104,"text":970},{"id":993,"depth":104,"text":994},{"id":1071,"depth":104,"text":1072,"children":1510},[1511,1512,1513],{"id":1075,"depth":375,"text":1076},{"id":1097,"depth":375,"text":1098},{"id":1162,"depth":375,"text":1163},{"id":1188,"depth":104,"text":1189,"children":1515},[1516,1517,1518],{"id":1192,"depth":375,"text":1193},{"id":1230,"depth":375,"text":1231},{"id":1265,"depth":375,"text":1266},{"id":268,"depth":104,"text":269},{"id":306,"depth":104,"text":307,"children":1521},[1522,1523,1524],{"id":1358,"depth":375,"text":1359},{"id":1399,"depth":375,"text":1400},{"id":1438,"depth":375,"text":1525},"Таймер не виден в systemctl list-timers","2026-02-16 18:55:58","Подробное руководство по настройке systemd-таймеров. Узнайте, как создавать, управлять и отлаживать задания по расписанию с помощью systemd. Практические примеры и советы.","15-30 минут",[1530,1533,1536],{"question":1531,"answer":1532},"В чем основное преимущество systemd-таймера перед cron?","Systemd-таймеры интегрированы с журналом systemd (journalctl), поддерживают календарные события (например 'Mon *-*-* 09:00:00' для каждого понедельника), могут запускаться с задержкой после загрузки системы (OnBootSec) и не зависят от отдельного демона.",{"question":1534,"answer":1535},"Как проверить, что мой таймер работает?","Используйте `systemctl list-timers --all` для просмотра всех таймеров и времени следующего запуска. Логи конкретного таймера смотрите через `journalctl -u \u003Cимя_таймера>.timer`.",{"question":1537,"answer":1538},"Можно ли запускать таймер только при наличии сети?","Да, в юните службы (не таймера!) укажите `Wants=network-online.target` и `After=network-online.target`. Это потребует, чтобы сеть была полностью активна перед запуском.",[1540,1543,1546,1549,1552,1555],{"name":1541,"text":1542},"Понимание структуры: два юнита","Systemd-таймер состоит из двух файлов: файл службы (`.service`) с описанием задачи и файл таймера (`.timer`) с расписанием. Таймер активирует службу по заданному расписанию.",{"name":1544,"text":1545},"Создание файла службы","Создайте файл `/etc/systemd/system/my-backup.service` (или в `~/.config/systemd/user/` для пользовательского таймера). Укажите `[Service]` с `Type=oneshot` и команду `ExecStart`.",{"name":1547,"text":1548},"Создание файла таймера","Создайте файл `/etc/systemd/system/my-backup.timer`. В секции `[Timer]` задайте расписание через `OnCalendar` (календарь) или `OnActiveSec` (интервал). Укажите `Unit=my-backup.service`.",{"name":1550,"text":1551},"Перезагрузка конфигурации systemd","После создания файлов выполните `sudo systemctl daemon-reload`, чтобы systemd узнал о новых юнитах.",{"name":1553,"text":1554},"Активация и запуск таймера","Включите таймер для автозапуска при загрузке: `sudo systemctl enable my-backup.timer`. Запустите его немедленно: `sudo systemctl start my-backup.timer`.",{"name":1556,"text":1557},"Мониторинг и отладка","Проверяйте статус: `systemctl status my-backup.timer`. Смотрите историю запусков таймера и связанной службы в журналах: `journalctl -u my-backup.timer -u my-backup.service --since \"1 hour ago\"`.","PT20M",[1560,1561,1562,1563,1564,1565,1566,1567],"systemd timer","запуск службы по расписанию systemd","как настроить cron через systemd","systemd timer unit пример","отладка systemd таймера","замена cron systemd","автоматизация задач linux systemd","systemd timer vs cron",{},[1570,1571,1572],"/guides/linux/systemd-service-files","/guides/linux/cron-advanced","/errors/linux/systemd-failed-to-start",{"title":596,"description":1527},"guides/linux/systemd-timers","В этом гайде вы научитесь использовать systemd-таймеры — современный и мощный механизм планирования задач в Linux, который предлагает больше возможностей, чем классический cron. Мы разберем создание юнитов, управление через systemctl и решение типичных проблем.",[951,429,1577,611,1578,1579,1580],"автоматизация","администрирование","timer","sysadmin","AecptPlgrI_6D-HCeO3Jt8hMyL_1oA05JgVxnlxumzQ",{"data":1583,"body":1584},{},{"type":449,"children":1585},[1586,1590,1599,1604],{"type":452,"tag":21,"props":1587,"children":1588},{},[1589],{"type":456,"value":83},{"type":452,"tag":85,"props":1591,"children":1594},{"className":1592,"code":88,"language":89,"meta":90,"style":1593},"language-bash","undefined",[1595],{"type":452,"tag":42,"props":1596,"children":1597},{"__ignoreMap":90},[1598],{"type":456,"value":88},{"type":452,"tag":21,"props":1600,"children":1601},{},[1602],{"type":456,"value":1603},"Объясните каждое поле: минуты, часы, день месяца, месяц, день недели.",{"type":452,"tag":365,"props":1605,"children":1606},{},[1607],{"type":456,"value":90}]