Timer — различия между версиями

Материал из Rosalab Wiki
Перейти к: навигация, поиск
(Новая страница: «= Выполнение задач по расписанию = == Введение == Эта статья описывает, как выполнять задач…»)
 
Строка 2: Строка 2:
 
== Введение ==
 
== Введение ==
 
Эта статья описывает, как выполнять задачи по расписанию в операционных системах ROSA Fresh/Хром.
 
Эта статья описывает, как выполнять задачи по расписанию в операционных системах ROSA Fresh/Хром.
== Таймеры systemd ==
+
 
 +
== Таймеры systemd: регулярное выполнение задачи по расписанию ==
 
Systemd timer — это компонент systemd, который позволяет запускать задачи (unit) в определенное время или с определенной периодичностью.
 
Systemd timer — это компонент systemd, который позволяет запускать задачи (unit) в определенное время или с определенной периодичностью.
  
Строка 52: Строка 53:
  
 
Подробнее смотрите в <code>man systemd.timer</code>.
 
Подробнее смотрите в <code>man systemd.timer</code>.
 +
 +
== atd: одноразовое выполнение задачи в заданное время ==
 +
atd (at daemon) - это программа в Linux, которая позволяет запускать задачи на выполнение в определенное время.
 +
 +
Вот простая инструкция по использованию atd:
 +
 +
Установите atd, если его нет на вашей системе:
 +
sudo dnf install at
 +
 +
Запустите службу atd и добавьте ее в автозапуск при загрузке ОС:
 +
sudo systemctl enable --now atd
 +
 +
Создайте задачу для запуска в определенное время. Например, чтобы запустить скрипт /path/to/myscript.sh в 2 часа ночи:
 +
echo "/path/to/myscript.sh" | at 2am
 +
 +
Чтобы просмотреть список запланированных задач:
 +
atq
 +
 +
Чтобы удалить задачу из очереди на выполнение:
 +
atrm <номер задачи>
 +
 +
Чтобы просмотреть вывод задачи после ее выполнения:
 +
at -c <номер задачи>
 +
 +
Несколько дополнительных примеров:
 +
 +
Запуск задачи в определенное время, указывая дату и время полностью:
 +
echo "/path/to/myscript.sh" | at 2023-03-11 03:00
 +
 +
Запуск задачи через несколько минут:
 +
echo "/path/to/myscript.sh" | at now + 5 minutes
 +
 +
Запуск задачи через несколько часов:
 +
echo "/path/to/myscript.sh" | at now + 3 hours
 +
 +
Запуск команды shell в заданное время:
 +
echo "ls /tmp > /home/user/tmp.log" | at 2am tomorrow

Версия 13:07, 10 марта 2023

Выполнение задач по расписанию

Введение

Эта статья описывает, как выполнять задачи по расписанию в операционных системах ROSA Fresh/Хром.

Таймеры systemd: регулярное выполнение задачи по расписанию

Systemd timer — это компонент systemd, который позволяет запускать задачи (unit) в определенное время или с определенной периодичностью.

Таймеры systemd полезны для автоматизации запуска определенных задач на сервере в заданные моменты времени или с определенной периодичностью, в зависимости от потребностей.

Отличие systemd timer от cron заключается в том, что в случае с timer systemd полностью контролирует выполнение задачи, позволяет ее досрочно остановить, запоминает статус исполнения, предотвращает дубликаты (например, запуск нового экземпляра задачи, когда как еще не остановился предыдущий).

Пример настройки systemd timer для запуска скрипта каждый день в 3 часа утра:

Создайте файл таймера в каталоге /etc/systemd/system/ с расширением .timer, например myscript.timer:

[Unit]
Description=My script timer

[Timer]
OnCalendar=*-*-* 03:00:00
Unit=myscript.service

[Install]
WantedBy=timers.target

Создайте файл сервиса для запуска скрипта, например myscript.service:

[Unit]
Description=My script

[Service]
ExecStart=/path/to/myscript.sh

Запустите и активируйте таймер:

sudo systemctl daemon-reload
sudo systemctl enable myscript.timer
sudo systemctl start myscript.timer

Еще несколько примеров значений параметра OnCalendar, задающего периодичность запуска задачи:

  • Запуск задачи каждую минуту:
OnCalendar=* * * * *
  • Запуск задачи каждый час в первую минуту:
OnCalendar=* * * * 1
  • Запуск задачи каждые два часа:
OnCalendar=* */2 * * *

Подробнее смотрите в man systemd.timer.

atd: одноразовое выполнение задачи в заданное время

atd (at daemon) - это программа в Linux, которая позволяет запускать задачи на выполнение в определенное время.

Вот простая инструкция по использованию atd:

Установите atd, если его нет на вашей системе:

sudo dnf install at

Запустите службу atd и добавьте ее в автозапуск при загрузке ОС:

sudo systemctl enable --now atd

Создайте задачу для запуска в определенное время. Например, чтобы запустить скрипт /path/to/myscript.sh в 2 часа ночи:

echo "/path/to/myscript.sh" | at 2am

Чтобы просмотреть список запланированных задач:

atq

Чтобы удалить задачу из очереди на выполнение:

atrm <номер задачи>

Чтобы просмотреть вывод задачи после ее выполнения:

at -c <номер задачи>

Несколько дополнительных примеров:

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

echo "/path/to/myscript.sh" | at 2023-03-11 03:00

Запуск задачи через несколько минут:

echo "/path/to/myscript.sh" | at now + 5 minutes

Запуск задачи через несколько часов:

echo "/path/to/myscript.sh" | at now + 3 hours

Запуск команды shell в заданное время:

echo "ls /tmp > /home/user/tmp.log" | at 2am tomorrow