Linux

Управление таймерами systemd: как создавать, запускать и отключать плановые задачи

В этой статье вы узнаете, как работать с таймерами systemd — создавать новые таймеры, управлять их работой и отключать ненужные задачи. Вы сможете настроить автоматические задачи в системе Linux.

Обновлено 8 июля 2026 г.
5-10 мин
Средняя
Команда FixPedia
Применимо к:Ubuntu 22.04Debian 11Fedora 38Arch Linux

Введение / Зачем это нужно

Таймеры systemd — это современная альтернатива cron, которая использует тот же движок, что и системные сервисы. Они позволяют планировать выполнение команд, отправлять уведомления или запускать скрипты по точному расписанию или по событию. Понимание базовых команд и рабочих процессов поможет вам автоматизировать задачи в Linux быстрее и надёжнее.

Требования / Подготовка

  • Система на базе Linux с systemd (например, Ubuntu 22.04, Debian 11, Fedora 38, Arch Linux).
  • Права root или доступ к sudo.
  • Базовые знания работы с терминалом.

Шаг 1: Просмотр списка таймеров

Выполните команду, чтобы увидеть все таймеры, активные и неактивные:

systemctl list-timers --all

В выводе отображаются имена таймеров, время следующего запуска, статус и описание.

Шаг 2: Создание нового таймера

Создайте два файла: таймер-файл (.timer) и сервис-файл (.service). Пример таймера, запускающего скрипт /opt/cleanup.sh ежедневно в 03:00 UTC:

Файл /etc/systemd/system/weekly-cleanup.timer:

[Unit]
Description=Еженедельный очиститель
Requires=weekly-cleanup.service

[Timer]
OnCalendar=*-*-* 03:00:00
Persistent=true

[Install]
WantedBy=timers.target

Файл /etc/systemd/system/weekly-cleanup.service:

[Unit]
Description=Запуск еженедельной очистки
ExecStart=/opt/cleanup.sh

Шаг 3: Включение и запуск таймера

Перезапустите демон, чтобы он прочитал новые файлы, затем включите и запустите таймер:

systemctl daemon-reload
systemctl enable weekly-cleanup.timer
systemctl start weekly-cleanup.timer

Таймер теперь зарегистрирован и будет запускаться по расписанию.

Шаг 4: Проверка состояния таймера

Убедитесь, что таймер активен:

systemctl status weekly-cleanup.timer

Также проверьте сервис, чтобы увидеть, был ли он запущен при первом срабатывании:

systemctl status weekly-cleanup.service

Если таймер ещё не сработал, вы увидите ожидаемое следующее время запуска.

Шаг 5: Отключение или удаление ненужного таймера

Если таймер больше не нужен, остановите и отключите его:

systemctl stop weekly-cleanup.timer
systemctl disable weekly-cleanup.timer

Для полного удаления удалите файлы таймеров и сервисов:

rm /etc/systemd/system/weekly-cleanup.timer
rm /etc/systemd/system/weekly-cleanup.service
systemctl daemon-reload

Проверка результата

После выполнения необходимых шагов повторно выполните systemctl list-timers --all, чтобы убедиться, что новый таймер отображается как «включён», а старый — как «отключён» или удалён.

💡 Совет: Используйте systemctl list-timers --human=false --all для получения краткого вывода, пригодного для скриптов.

Возможные проблемы

  • Таймер неактивен. Убедитесь, что файлы расположены в /etc/systemd/system/ (или /lib/systemd/system/), и выполните systemctl daemon-reload.
  • Таймер запускается сразу. Проверьте OnCalendar и Persistent=true — последняя строка заставляет таймер запускаться при первом совпадении после перезагрузки.
  • Сервис не запускается. Проверьте ExecStart в сервис-файле, права доступа к скрипту (chmod +x /opt/cleanup.sh) и выполните systemctl restart weekly-cleanup.service.

Теперь у вас есть полный набор навыков для управления таймерами systemd — от просмотра существующих до создания, включения, проверки и удаления. Используйте эти команды, чтобы поддерживать автоматизацию в вашей системе Linux эффективной и актуальной.

Часто задаваемые вопросы

Для чего нужны таймеры systemd?
Как проверить, включён ли таймер?
Что делать, если таймер не запускается?
Можно ли отключить таймер без удаления?

Полезное

Просмотр списка таймеров
Создание нового таймера
Включение и запуск таймера
Проверка состояния таймера
Отключение или удаление ненужного таймера

Эта статья помогла вам решить проблему?