Использование планировщика задач

Планировщик задач — инструмент, который автоматически выполняет нужные действия по расписанию. С его помощью можно настроить автоматические перезапуски (рестарты) сервера, регулярные бэкапы и отправку команд в консоль в заданное время. Планировщик иногда называют «расписанием» или, по аналогии с Linux, cron либо crontab — суть одна и та же. Все настройки находятся в разделе «Расписание» на странице твоего сервера в личном кабинете.

Как работает планировщик

Планировщик состоит из двух частей: расписаний и задач. Расписание задаёт время, когда нужно что-то сделать, а задачи — это конкретные действия, которые выполнятся в этот момент. У одного расписания может быть несколько задач, и они выполняются друг за другом.

Время запуска расписания задаётся четырьмя полями: «День недели», «Месяц», «День», «Час» и «Минута». Расписание сработает только тогда, когда совпадут все пять условий. Это та же логика, что и в cron-выражениях вида 0 0 * * *.

Звёздочка * означает «любое значение». Если в поле «День недели» поставить *, расписание будет срабатывать каждый день. Чтобы запускать задачу только по конкретным дням, перечисли их через запятую: например, 3,5,7 в поле «День недели» — это среда, пятница и воскресенье.

Время в планировщике считается по Москве (МСК). Учитывай это, когда задаёшь час запуска, иначе задачи будут срабатывать не тогда, когда ты ожидаешь.

У каждой задачи есть параметр «Задержка» — это пауза перед её выполнением в секундах. Важный момент: задержка отсчитывается не от старта расписания, а от запуска предыдущей задачи в этом же расписании.

Этап 1. Создание расписания

  1. Открой личный кабинет и выбери свой сервер.
  2. Перейди в раздел «Расписание».
  3. Нажми «Создать расписание».
Экран создания нового расписания в личном кабинете

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

Допустим, мы хотим, чтобы расписание срабатывало каждый день ровно в полночь. «День недели», «Месяц» и «День» нам не важны, поэтому в эти три поля ставим *. В поле «Час» указываем 0, в «Минута» — тоже 0. В виде cron-выражения это выглядит так: 0 0 * * *.

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

На скриншоте показаны все пять полей времени. После их заполнения нажми «Создать» — новое расписание появится в списке. Кликни по нему, чтобы перейти к задачам.

Этап 2. Добавление задач

Внутри расписания нажми «Создать задачу». У задачи есть три основных параметра: «Действие», «Задержка» и (для команд) «Команда».

Доступные действия:

  • «Выполнить команду» — выполняет команду в консоли сервера так, как будто ты ввёл её вручную.
  • «Изменить состояние» — запускает, останавливает или перезапускает сервер.
  • «Создать бэкап» — делает резервную копию сервера.
Окно создания задачи с выбором действия и задержки

В поле «Команда» вводится только сам текст команды, без слеша в начале. Например, чтобы вывести сообщение всем игрокам, достаточно написать say Привет.

Автоматический рестарт сервера

Соберём расписание, которое каждую ночь перезапускает сервер и заранее предупреждает игроков. Перезапуск назначим на полночь, а за минуту до него начнём показывать предупреждения. Чтобы первое предупреждение появилось ровно в 23:59, время запуска расписания ставим на 23:59 — «Минута часа» 59, «Час дня» 23, оба поля с датой оставляем *.

Дальше внутри расписания добавляем три задачи:

  1. Первое предупреждение. Действие — «Выполнить команду», задержка 0, команда: say Перезапуск через одну минуту.
  2. Второе предупреждение. Действие — «Выполнить команду», задержка 60, команда: say Перезапуск через три секунды.
  3. Перезапуск. Действие — «Изменить состояние», состояние — «Перезапустить сервер», задержка 3.
Готовое расписание с тремя задачами: два предупреждения и перезапуск

На скриншоте видно итоговый порядок задач. Помни, что задержка каждой задачи считается от предыдущей: 60 — это пауза после первого предупреждения, а 3 — после второго. Поэтому сообщения появятся в 23:59:00 и 23:59:60 (то есть в 00:00:00), а сам рестарт произойдёт через три секунды после второго предупреждения.

Для перезапуска используй действие «Изменить состояние» → «Перезапустить сервер», а не консольную команду restart. Команда restart есть не на всех ядрах: на части серверов она просто остановит сервер и не запустит его обратно.

Автоматические бэкапы

Планировщик умеет делать и автоматические резервные копии (бэкапы). Настроим ежедневный бэкап на 5 утра, когда на сервере обычно меньше всего игроков.

  1. Создай новое расписание со временем запуска 0 5 * * * — «Минута часа» 0, «Час дня» 5, поля с датой *.
  2. Внутри добавь одну задачу: Действие — «Создать бэкап», задержка 0.

Этого достаточно: теперь каждую ночь сервер будет сам сохранять резервную копию.

Учти, что количество бэкапов ограничено тарифной линейкой: на «Дешёвых» доступна 1 копия, на «Средних» — 3, на «Мощных» — 10. Подробнее об этом — в статье про тарифные линейки. Когда лимит исчерпан, самая старая копия автоматически удаляется, а на её место встаёт новая — следить за этим вручную не нужно. Проблемы начнутся только в одном случае: если лимит исчерпан и при этом все копии заблокированы от удаления в панели. Тогда новый бэкап создать не получится, пока ты не снимешь блокировку хотя бы с одной из них.

Распространённые ошибки

Рестарт в * 0 * * *. Это самая частая ошибка новичков. В таком расписании «Минута часа» — * (любая минута), а «Час дня» — 0. Значит, сервер будет перезапускаться каждую минуту в течение всего часа с 00:00 до 00:59, то есть 60 раз подряд. Чтобы перезапуск срабатывал один раз в полночь, ставь «Минута часа» 0 и «Час дня» 0 — в виде cron это 0 0 * * *.

Использование команды restart. Для перезапуска выбирай действие «Изменить состояние», а не отправляй команду restart. На многих ядрах такой команды нет, и сервер может остаться выключенным.

Неверный расчёт задержки. Задержка отсчитывается от предыдущей задачи, а не от начала расписания. Если нужно выполнить одно действие через минуту после старта, а второе — через две минуты после старта, то у второй задачи задержка должна быть 60, а не 120.

Команды на остановленном сервере. Действие «Отправить команду» работает только тогда, когда сервер запущен. Если в момент срабатывания расписания сервер выключен, команда просто не выполнится — в отличие от действия «Изменить состояние», которое сервер как раз и может запустить.